2017-01-25 4 views
0

Oracle DBからデータを取得するSQLクエリをTOADに作成しようとしています。 前の就業日のすべてのデータを1週間に戻しますが、土曜日と日曜日は除外してください。 これまでのところ、以下のクエリが作成されています。この形式では、「キーワードがありません」というエラーメッセージが返されます。 TOADは私の最初の「Between」演算子を強調表示します。 私はほとんどそこにいるという考えがあります。誰が私に正しい方向への最後のプッシュを与えることができます。前日日付週末を除く

ありがとうございました。

Select orderkey, actualshipdate 
from orders 
Case to_char(sysdate, 'DAY') 
When 'MONDAY' 
then to_char(actualshipdate,'YYYYMMDD') between to_char(sysdate, 'YYYYMMDD') -11 and to_char(sysdate, 'YYYYMMDD')-3 
else to_char(actualshipdate,'YYYYMMDD') between to_char(sysdate, 'YYYYMMDD') -8 and to_char(sysdate, 'YYYYMMDD')-1 
end 
order by actualshipdate asc 

答えて

0

あなたの説明(および交換日付のひどいTO_CHAR)に基づいて:

select orderkey, actualshipdate 
from orders 
where 1=1 
and actualshipdate between trunc(sysdate) - 8 
        and trunc(sysdate)-(1/86400) -- midnight last night minus 1 second 
and to_char(actualshipdate, 'D') not in (6,7) -- 6: Sat, 7: Sun 
+0

感謝。それはトリックです。しかし、それは私にもsysdateのデータを示しています。それも除外される方法はありますか? –

+0

このクエリが機能しているかどうかわかりません。 'to_char(actualshipdate、 'DAY')'は 'SATURDAY ''を返します。 '' SUNDAY '' - いずれも一致しません。空白が埋められています。また、あなたの現在の 'NLS_DATE_LANGUAGE'がENGLISHまたは類似していると推測します。 –

+0

修正します。 JohnHCから提供されたクエリを再度チェックしました。また、土曜日と日曜日のデータも表示されます。私は6行しかなかったので、それらを見落としました。週末を除外するには他に何ができるのですか? –

関連する問題