2013-10-14 122 views
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函數)。

回答

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); 
+0

這不是我想要的..我做了我的計算,但這是最接近的,所以我接受這個答案.. thx – Dhaval

0

根據您是否想造成爲非負或非正的,你可以在下面的語句切換MIN和MAX:

select max(value) - min(value) 
    from table1 
where id in (1,2)