여러 조건이있는 사례


14

몇 가지 조건에 따라 select 문에서 반환 값을 변경해야합니다. 나는 그런 것을 시도했다 :

,CASE i.DocValue
  WHEN 'F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

왜 작동하지 않고 이것을 권장하는 방법은 무엇입니까? 다음 몇 가지 조건이 있습니다.

감사합니다

답변:


25
,CASE WHEN i.DocValue ='F2' AND c.CondCode IN ('ZPR0','ZT10','Z305') THEN c.CondVal
  ELSE 0
END as Value

CASE명령문에는 SIMPLESEARCHED 의 두 가지 유형이 있습니다 .

시도한 단순 사례 표현식에서 여러 표현식을 평가할 수 없습니다.

-- Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
-- Searched CASE expression:
CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

간단한 CASE 예 :

CASE x
  WHEN 'a' THEN 'b'
  WHEN 'c' THEN 'd'
  ELSE 'z'
END

검색된 CASE 예 :

CASE 
  WHEN x = 1 AND y = 2 THEN 'a'
  WHEN x = 2 AND y = 1 THEN 'b'
  ELSE 'z'
END

추가 자료 : http://msdn.microsoft.com/en-us/library/ms181765.aspx


1

여러 요구 사항이있는 경우 다음과 같이 작성할 수도 있습니다.

CASE WHEN CITY='HYDERABAD' THEN       
 CASE WHEN AREA='BHILL' THEN PIN='12345'      
 WHEN AREA='DSNR' THEN PIN='67890'          
 ELSE '33333'          
 END           
END AS PIN_COD

당신은 맞습니다, 복잡한 조건에 대한 중첩 된 케이스도 작동합니다 :)
Muflix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.