2016-06-14 78 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]