SQL SUM,分组依据和查询

时间:2012-11-15 14:10:50

标签: sql sql-server group-by sum having

我有一个非常标准的查询,它会为我提供库存高于0的产品列表。

这很好用,但我现在需要为给定的SKU添加BranchID 31的所有负数的SUM。

SELECT * FROM Products WHERE
PrimaryPLU IN 
(select SKU FROM Stock 
WHERE BranchID IN (2,12,1,11,0,96,32,13,14,15) 
AND ApplicationID = @site 
GROUP BY SKU HAVING(SUM(Stock)) > 0))

SO BranchID 31可以有正数和负数,但是我只需要得到SKU的负数之和,然后需要将其添加到检查中以查看它是否超过0。

不知道从哪里开始,希望得到SQL大师的支持!

提前致谢!

戴夫

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT * FROM Products WHERE
PrimaryPLU IN 
(select SKU FROM Stock 
WHERE BranchID IN (2,12,1,11,0,96,31,32,13,14,15) 
AND ApplicationID = @site 
GROUP BY SKU HAVING(SUM(CASE WHEN Stock < 0 AND BranchID = 31 
              THEN Stock ELSE 0 END)) > 0))

答案 1 :(得分:0)

取负数(股票)的绝对值之和,看它们是否为非零。