SQL Server - 在WHERE子句中使用CASE
问题描述:
我想在WHERE
子句中使用CASE
,但它返回错误。SQL Server - 在WHERE子句中使用CASE
我可以在where子句中使用CASE吗?或如何解决它?由于
SELECT * FROM hris_leave.dbo.tbl_act
inner join hris_leave.dbo.tstaff on hris_leave.dbo.tstaff.s_id = hris_leave.dbo.tbl_act.s_id
where
case when acting_to is not null
then
datediff(day, acting_from, acting_to) >= 90 and acting_to >= '2010-10-01'
else
acting_to is null
order by hris_leave.dbo.tbl_act.s_id
答
在你的情况,你只需要OR
WHERE
(
acting_to is null
OR
(
datediff(day, acting_from, acting_to) >= 90
AND
acting_to >= '2010-10-01'
)
)
的情况是值,没有条件。条件是CASE表达式
如
CASE
WHEN SomeCol = 'a' THEN ColA
WHEN SomeCol = 'c' THEN ColC
ELSE ColB
END > 42
+0
非常感谢你 –
你不能做你正在尝试做的外面。什么是null acting_to日期代表您的数据?这是否意味着休假? – Sparky
您可以在WHERE子句中使用CASE,但CASE没有任何意义,并且在语法上不正确。 – mwan