减去两行

时间:2013-10-14 09:18:40

标签: sql-server sql-server-2008

我在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函数)。

2 个答案:

答案 0 :(得分:2)

<Fiddle demo 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)