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-使用版本用例更新了答案。不使用用例的原始解决方案是一个更好的主意。