2016-06-14 57 views
-2

我想下面的公式轉換成SQL Case語句 -SQL服務器機箱

=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]和NOT [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

Sum([Amount]爲[Currency] =「XYZ」)給出錯誤。我在Sql server 2008 R2 – user2490024

+0

您可以像.. 'ELSE(CASE WHEN [Currency] =「XYZ」THEN Sum([Amount])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]