2011-09-30 4 views
1

WHERE 절에 사용하고 있지만 오류가 반환됩니다.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 
+0

당신은 당신이하려고하는 일을 할 수 밖에. 데이터에서 null 연기 _ 날짜가 나타내는 것은 무엇입니까? 아직 휴가 중이라는 뜻인가요? – Sparky

+0

WHERE 절에서 CASE를 사용할 수 있지만 CASE가 의미가 없으며 구문이 올바르지 않습니다. – mwan

답변

7

, 당신은 만하면 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

대단히 감사합니다. –