SQL HAVING SUM GROUP BY
-
21-09-2019 - |
题
使用SQL Server 2005中我建立库存/采购计划,我在这里,我需要用户“退房”设备点。当他选择一个产品,我需要查询其股票地点有可用的数量,并告诉走哪个位置/检索产品的用户。
下面是对于特定的[StockLocation_Products] .ProductID的查询时,与特定的分配[ProductUsages] .ProductUsageID。
SELECT
PROD.ProductID,
PROD.ProductName,
SL.Room,
SL.StockSpace,
SLPPU.ResvQty,
PRDUSG.ProductUsage
FROM [StockLocations] SL
INNER JOIN [StockLocation_Products] SLP ON SL.StockLocationID = SLP.StockLocationID
INNER JOIN [StockLocation_Product_ProductUsages] SLPPU ON SLP.StockLocationID = SLPPU.StockLocationID AND SLP.ProductID = SLPPU.ProductID
INNER JOIN [ProductUsages] PUSG ON SLPPU.ProductUsageID = PRDUSG.ProductUsageID
INNER JOIN [Products] PROD ON SLPPU.ProductID = PROD.ProductID
WHERE SLP.ProductID = 4 AND PRDUSG.ProductUsageID = 1
此查询返回:
ProductID ProductName Room StockSpace ResvQty ProductUsage
------------------------------------------------------------------------------------------------------------------------
4 Addonics Pocket DVD+/-R/RW B700 5-D 12 MC Pool
4 Addonics Pocket DVD+/-R/RW B700 6-B 10 MC Pool
4 Addonics Pocket DVD+/-R/RW B700 6-C 21 MC Pool
4 Addonics Pocket DVD+/-R/RW B700 6-D 20 MC Pool
我想也许我可以使用一个额外的HAVING子句,使该查询返回你需要去满足一些数量的请求,其StockSpace(S)的组合。例如。用户需要拉产品的30(ID = 4)。
但我真的不知道如何使用GROUP BY与具有SUM(),以达到我想要的。
我尝试过各种东西在我的组由/ having子句,但我没有得到任何结果。
GROUP BY PROD.ProductID,PROD.ProductName,SL.Room,SL.StockSpace,SLPPU.ResvQty,PUSG.ProductUsage
HAVING SUM(ResvQty) >= 30;
我想要的结果,显示其总计为30 StockSpaces的(至少一个)的组合,所以可告诉用户“您可以从“6-B获得从空间‘6-C’21个单位,和9个单位”。有可能是行的多种组合,可以总结()> = 30,但我至少需要如何找到一个组合呢!救命啊!
其他提示
可以具有内选择,如:
SELECT count_of_foo, count(bar), baz
FROM (SELECT count(foo) as count_of_foo, bar, baz, other1, other2 FROM complex_query WHERE foo = bar HAVING count(foo) > 1) inner_query
GROUP BY count_of_foo, baz.
这会给你通过HAVING子句后添加更多的组的能力。
不隶属于 StackOverflow