在 T-SQL 中,我收到此错误
'<'.
附近的语法不正确
这是我的 T-SQL 语句:
SELECT *
FROM TableName
WHERE CStatus = 'Active'
AND ServiceStatus = 'Active'
AND DATEDIFF(day, OnDate, OffDate) > 0
AND
CASE
WHEN EOMONTH(CA.OnDate) = 31
THEN DATEDIFF(day, OnDate, OffDate) <= 31
ELSE DATEDIFF(day, OnDate, OffDate) <= 30
END
我试图在
CASE
子句中使用 WHERE
表达式,但我收到了该错误。
我想比较
OnDate
月是否有31天,然后是31天,否则是30天。
A
case
表达式返回一个值,而不是条件的片段,因此存在语法错误。
一种方法是重写条件,使
datediff
部分保持不变,并且仅通过 case
表达式计算其比较的值:
SELECT *
FROM TableName
WHERE CStatus = 'Active'
AND ServiceStatus = 'Active'
AND DATEDIFF(day, OnDate, OffDate) > 0
DATEDIFF(day, OnDate, OffDate) < CASE EOMONTH(CA.OnDate)
WHEN 31 THEN 31
ELSE 30
END