条件汇总列

时间:2012-02-07 11:52:55

标签: tsql group-by case

我有以下情况

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

但这没效果。

1 个答案:

答案 0 :(得分: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