SQL MIT SUMME GRUPPE DURCH

Mithilfe von SQL Server 2005. Ich bin Gebäude eine Bestandsaufnahme/purchasing-Programm und ich bin an dem Punkt, wo ich noch die Benutzer auf "check out" - Ausrüstung. Wenn er wählt ein Produkt, muss ich Abfragen, welche Lagerorte verfügen die verfügbare Menge, und informieren den Benutzer, welche location zu Fuss zu erreichen/abrufen von Produkt.

Hier ist eine Abfrage für einen bestimmten [StockLocation_Products].ProductID, mit einem bestimmten zugeordnet [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

Diese Abfrage gibt:

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

Ich dachte, vielleicht könnte ich eine zusätzliche HAVING-Klausel, um diese Abfrage zurück, welche Kombination von StockSpace(s) Sie brauchen, um zu besuchen, zu erfüllen, einen Antrag für einige Qty. E. g. Die Bedürfnisse der Nutzer zu ziehen 30 Produkt (ID =4).

Aber ich weiß nicht wirklich verstehen, wie die Verwendung VON GROUP by mit HAVING SUM(), um zu erreichen, was ich will.

Ich habe versucht, verschiedene Dinge in mein group by /having-Klausel, aber ich bekomme keine Ergebnisse.

GROUP BY PROD.ProductID,PROD.ProductName,SL.Room,SL.StockSpace,SLPPU.ResvQty,PUSG.ProductUsage
HAVING SUM(ResvQty) >= 30;

Ich will Ergebnisse, die zeigen, dass (mindestens eine) Kombination von StockSpaces, die Summen bis zu 30, so kann ich sagen, der Benutzer "können Sie sich 21 Einheiten aus Raum - '6-C', und 9 Einheiten von "6-B'. Möglicherweise gibt es mehrere Kombinationen von Zeilen, die Summe() >= 30, aber ich brauche mindestens so finden Sie eine Kombination, die funktioniert! Hilfe!!!

InformationsquelleAutor mhz.NET | 2010-01-18
Schreibe einen Kommentar