我在SQL Server中有以下名为table1的表。
id value
1 10
2 100
3 20
4 40
5 50
当我在查询后执行查询时,它给出了预期的结果110
SELECT SUM(value) from table1 where id in (1,2)
我想要的是SUM的意思是输出应该是90或-90。
我知道这可以通过编写以下查询来完成
select ((SELECT value from table1 where id in (1)) - (SELECT value from table1 where id in (2)) )
但是有没有简化的方法(像SUM函数)。
答案 0 :(得分:2)
Sum()
使用Case
:
Declare @SubId int =1
--To get -90 or +90 change the value of @SubId from 1 to 2
Select Sum(Case When Id = @SubId Then value Else -1*Value End) Total
From Table1
Where Id in (1,2);
答案 1 :(得分:0)
根据您希望结果是非负数还是非正数,您可以在以下语句中切换MIN和MAX:
select max(value) - min(value)
from table1
where id in (1,2)