Joe*_*Yan 2 sql sql-server sql-server-2008
我想使用CASEin WHERE子句,但它返回错误.
我可以在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
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您只需要OR
WHERE
(
acting_to is null
OR
(
datediff(day, acting_from, acting_to) >= 90
AND
acting_to >= '2010-10-01'
)
)
Run Code Online (Sandbox Code Playgroud)
一个案例是价值观,而不是条件.条件超出了CASE表达式
例如
CASE
WHEN SomeCol = 'a' THEN ColA
WHEN SomeCol = 'c' THEN ColC
ELSE ColB
END > 42
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14999 次 |
| 最近记录: |