2

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

4

2 回答 2

2

使用Sum()with 的小提琴演示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);
于 2013-10-14T09:32:34.137 回答
0

根据您希望结果是非负数还是非正数,您可以在以下语句中切换 MIN 和 MAX:

select max(value) - min(value)
  from table1
 where id in (1,2)
于 2013-10-14T10:20:55.930 回答