2016-08-05 8 views
0

以下は私が作業しようとしているパートコードです...本日の月曜日の場合、基本的に前の月曜日の日付を返します。もし今日が月曜日でなければ、今週の月曜日の日付を私に与えるでしょう。ケース内の複数のブール式When文

WHERE 
CASE WHEN 
DATEPART(dw,GETDATE()) = '1' 
THEN 
DateColumn >= DATEADD(wk,DATEDIFF(wk,0,GETDATE()) - 1,0) 
ELSE 
DateColumn >= DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 
END 

しかし、コードを実行すると、 '>'の近くに不正な構文があることがわかります。私は複数のブール式を使用して私が好きではない場合や、実際にその構文に何か問題があるかどうかはわかりません。

答えて

1

構文が少し間違っています。それは次のようになります:

WHERE 
DateColumn >= 
    CASE WHEN DATEPART(dw,GETDATE()) = 1 -- datepart returns an integer, so no quotes 
    THEN DATEADD(wk,DATEDIFF(wk,0,GETDATE()) - 1,0) 
    ELSE DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 
    END 
+0

ありがとう!私はそれを正しく設定する方法を知っているので、これをさらに多く使用する予定です! –