2012-02-07 95 views
1

我有以下的情況條件總結列

ID Value 
1 50 
1 60 
2 70 
2 80 
1 0 
2 50 

我需要運行,將返回總和值的查詢,通過ID分組。美中不足的是,如果該值是0,那麼整個總和應爲0

查詢結果將

ID Value 
1 0 
2 200 

我試圖

select ID, case 
when Value> 0 then sum(Value) * 1 
when Value= 0 then sum(value) * 0 
end 
from table 

,但沒有奏效。

回答

4
select ID, 
     sum(value)*sign(min(abs(value))) as [sum(value)] 
from YourTable 
group by ID 

有了,如果你喜歡一個案例:

select ID, 
     case sign(min(abs(value))) 
     when 0 then 0 
     else sum(value) 
     end as [sum(value)] 
from YourTable 
group by ID 
+0

您可以在case語句中使用聚合函數,或者你可以把一個case語句中的聚合函數。您無法檢查** un **彙總值並返回彙總值。 – 2012-02-07 12:13:33

+0

清潔和簡單。但無法使用CASE – mko 2012-02-07 12:13:54

+0

@John - 使用CASE的版本更新了答案。 – 2012-02-07 12:18:05