複数の条件があるケース


14

いくつかの条件に基づいて、selectステートメントからの戻り値を変更する必要があります。私はそのようなことを試しました:

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

なぜそれが機能していないのですか、これを行うための推奨方法は何ですか?次のWHEN条件がいくつかあります。

ありがとうございました

回答:


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

CASEステートメントには、SIMPLESEARCHEDの 2つのタイプがあります。

単純なケース式で複数の式を評価することはできません。これは、あなたがしようとしていたことです。

-- 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 x
  WHEN 'a' THEN 'b'
  WHEN 'c' THEN 'd'
  ELSE 'z'
END

検索されたケースの例:

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.