2016-06-14 4 views
-2

私は、SQL case文に式の下に変換したい -SQL ServerのCASE

=If([Amount] Where([Currency]="XYZ")=0 And [BucketCode]="111") Then [Measure1] 
    ElseIf([Amount] Where([Currency]="XYZ") =0 And [BucketCode]="222") Then [Measure2] 
Else (Sum([Amount])Where ([Currency]="XYZ")) 

おかげで、 トッド

+7

あなたの実際の問題は何ですか? – HoneyBadger

+0

要件は何ですか。どのような条件に基づいて何を返そうとしていますか? – RanchiRhino

+0

私が直面している問題は、case文にwhere句を入れる方法です。あなたが元の表現でそれを見ることができるように、そこには、それに付随する浄化の句があります。 Select文でこのコードを書き直さなければならない場合は、where句を[Amount]と[Measure1/2]にのみ影響するようにするにはどうすればよいですか?これは私の質問です – user2490024

答えて

2

よりもむしろあなたは、問題文を提供する必要があります翻訳するためのコードを提供します。以下のコードを参考にしてみてください。

CASE 
WHEN 
    (CASE WHEN[Currency]="XYZ" THEN [Currency] END)=0 
    AND [BucketCode]="111" 
THEN [Measure1] 
WHEN 
    (CASE WHEN[Currency]="XYZ" THEN [Currency] END)=0 
    AND [BucketCode]="222" 
THEN [Measure2] 
ELSE Sum([Amount] for [Currency]="XYZ") 
END 
+0

合計([通貨] = "XYZ"の[金額])がエラーを示しています。私はSQL Server 2008 R2の上にいる – user2490024

+0

あなたのようにすることができます.. 'ELSE(場合は、[通貨] =" XYZ "THEN合計([量])END)' これはちょうどアイデアのためです。あなたはより良い解決のためにそれを探索すべきです。 – RanchiRhino

0

以下のクエリを使用してください。

Select Col1 = 
    CASE 
    WHEN ([Amount]=0 And [BucketCode]="111") THEN 'Measure1' 
    WHEN ([Amount]=0 And [BucketCode]="222") THEN 'Measure2' 
    ELSE (SUM([Amount])) END 
FROM MyTable 
WHERE [Currency]="XYZ" 
GROUP BY [Currency],[BucketCode]