我在一个表中有以下日期
Id Side Quant
ABC B 10
ABC S 5
ABC B 2
XYZ B 3
XYZ B 1
MNO S 6
我希望有一个按ID分组并对数量求和的查询。当总和Side等于S的数量时,需要减去数量(因此为负值)。结果应如下所示,
ID Quant
ABC 7
XYZ 4
MNO -6
我知道我可以做类似下面的事情,但不知道如何处理等于S必须为负数的Sides?
select ID, Sum(Quant) TotalQuant from tblOrders
group by ID, Quant
答案 0 :(得分:1)
您可以使用CASE WHEN
来否定数字:
SELECT ID,
SUM(CASE WHEN Side = 'S' THEN -Quant ELSE Quant END) AS TotalQuant
FROM tblOrders
GROUP BY ID
的 LiveDemo
强>
使用 SQL Server 2012 + ,您可以使用 IIF
功能
SELECT ID,
SUM(IIF(Side = 'S', -Quant, Quant)) AS TotalQuant
FROM tblOrders
GROUP BY ID