Tsql 条件汇总列

Tsql 条件汇总列,tsql,group-by,case,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 tab

我有以下情况

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
但这并不奏效

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
如果您愿意,请提供一个案例:

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

您可以在case语句中使用聚合函数,也可以在聚合函数中放置case语句。您不能对照未聚合的值进行检查并返回聚合的值。@John-使用CASE版本更新了答案。不使用CASE的原始解决方案是一个更好的主意。您可以在CASE语句中使用聚合函数,也可以在聚合函数中使用CASE语句。您不能对照未聚合的值进行检查并返回聚合的值。@John-使用版本用例更新了答案。不使用用例的原始解决方案是一个更好的主意。