SQL Server - использование CASE в предложении WHERE - PullRequest
2 голосов
/ 30 сентября 2011

Я хочу использовать CASE в предложении WHERE, но оно возвращает ошибку.

Могу ли я использовать CASE в предложении where?или как это исправить?Спасибо

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 

1 Ответ

7 голосов
/ 30 сентября 2011

В вашем случае вам нужно только ИЛИ

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...