我需要检查不同日期的记录,具体取决于当前的哪一天。
在星期五,我需要看整个下周,直到下周日。在任何其他日子,它应该检查当前周,直到即将到来的星期天。
我目前有以下内容但由于语法错误而无法正常工作。是否可以在CASE WHEN
条款中执行WHERE
?
WHERE
T0.[Status] IN ('R','P')
AND
CASE
WHEN DATEPART(weekday,GETDATE()) = '5'
THEN T0.[DueDate] >= GETDATE() AND <= DATEADD(day, 15 - DATEPART(weekday, GetDate()), GetDate())
WHEN DATEPART(weekday, GETDATE()) != '5'
THEN T0.[DueDate] >= GETDATE() AND <= DATEADD(DAY ,8- DATEPART(weekday, GETDATE()), GETDATE())
END
答案 0 :(得分:3)
使用一系列逻辑or
和and
运算符创建此逻辑要容易得多:
WHERE
T0.[Status] IN ('R','P') AND
((DATEPART(weekday,GETDATE()) = '5' AND
T0.[DueDate] >= GETDATE() AND
T0.[DueDate] <= DATEADD(day, 15 - DATEPART(weekday, GetDate()), GetDate())) OR
(DATEPART(weekday,GETDATE()) != '5' AND
T0.[DueDate] >= GETDATE() AND
T0.[DueDate] <= DATEADD(DAY ,8- DATEPART(weekday,GETDATE()),GETDATE())
)
答案 1 :(得分:1)
您的语法错误,您在bindingKey
子句中使用条件评估而不是assignemnet
THEN
或内部案例
WHEN DATEPART(weekday,GETDATE()) = '5' THEN Your_column1 ELSE your_column2 END
......