Использование 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 (ов) вам нужно посетить, чтобы удовлетворить запрос для некоторого Qty. Например. Пользователь должен вытащить 30 продукта (ID = 4).
Но я не совсем понимаю, как использовать GROUP BY с HAVING SUM () для достижения того, чего я хочу.
Я пробовал разные вещи в своей группе с помощью / с предложением, но я просто не получил никаких результатов.
GROUP BY PROD.ProductID,PROD.ProductName,SL.Room,SL.StockSpace,SLPPU.ResvQty,PUSG.ProductUsage
HAVING SUM(ResvQty) >= 30;
Мне нужны результаты, которые показывают (хотя бы одну) комбинацию StockSpaces, которая суммирует до 30, чтобы я мог сказать пользователю: «Вы можете получить 21 единицу из пространства« 6-C »и 9 единиц из« 6-B » ». Может быть несколько комбинаций строк, которые могли бы sum ()> = 30, но мне нужно хотя бы как найти одну комбинацию, которая делает! Помогите!