SQL

SQL Server-在WHERE子句中使用CASE

发布于 2021-04-15 10:31:09

我想使用CASEinWHERE子句,但它返回错误。

我可以在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
关注者
0
被浏览
131
1 个回答
  • 面试哥
    面试哥 2021-04-15
    为面试而生,有面试问题,就找面试哥。

    就您而言,您只需要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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看