2017-09-06 6 views
0

以下のような要件があります。以下のクエリは、毎日、毎週、毎月 の3つの条件で実行する必要があります。DB2の最初の営業日を取得する方法

毎日の行は毎日出力する必要があります。 は毎週土曜日に出力する必要があります。 Monthlyは1営業日に出力しますが、1日が土曜日の場合は3日目、1日目が日曜日の場合は2日目が出力されます。

は、私はSQL下記により毎日と毎月のための私の正確な出力を得、上記の要件

ごとに今、私はこのデータを表示する4行

Status ID COL1 COL2 
= = = = = = = = = = = = 
Daily 12 100 150.2 
Daily 17  90 120.6 
Weekly 24 180 50.6 
Monthly 25 150 155.2 

の下に私を与えているテーブル名から選択します*月々に助けが必要

Select * from Tablename 
where 
ID in (12,17) OR --daily 
(DAYNAME(CURRENT DATE) = 'Saturday' AND ID = 24) --weekly 
(TO_CHAR(DATE(CURRENT DATE)) = '01' AND ID = 25 AND DAYNAME(CURRENT DATE) NOT IN ('Saturday','Sunday')) --monthly 

しかし、私の月間のロジックは私に期待された出力を与えていません。

答えて

1

私が気づいた最初のことは、ウィークリーラインの終わりに欠けているORがあるということです - それは単にタイプミスだと思います。

「月間」の回線にはさらに複雑さが必要だと思います。 -

Select * from Tablename 
where 
ID in (12,17) OR --daily 
(DAYNAME(CURRENT DATE) = 'Saturday' AND ID = 24) OR --weekly 
(ID = 25 AND 
    (
     ( TO_CHAR(DATE(CURRENT DATE)) = '01' AND 
      (DAYNAME(CURRENT DATE) NOT IN ('Saturday','Sunday')) 
     ) 
     OR(TO_CHAR(DATE(CURRENT DATE)) IN ('02', '03') AND 
      (DAYNAME(CURRENT DATE) = 'Monday')) 
    ) 
) --monthly 
+0

ありがとうございます...期待通りに働いています。 ps:はい、ちょうどタイプミスです:) – goldenbutter

関連する問題