2016-04-19 4 views
1

Ich habe Schwierigkeiten, diese Abfrage die Summe in 1 Zeile zurückzugeben.SQL SUM gibt 2 Zeilen. Ich möchte 1 Zeile

SELECTst.[code], SUM(whst.WHQtyOnHand) 
FROM dbo.[StkItem] st, dbo.WhseStk whst 
WHERE whst.WHWhseID in (3, 4) 
    AND whst.WHStockLink = st.StockLink 
    AND st.Code = 'BNV203N' 
GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink 

Hier ist das Ergebnis erhalte ich:

Code  WHQtyOnHand 
--------------------------- 
BNV203N  694 
BNV203N  3748 

ich sie als insgesamt brauchen.

+0

Funktioniert das auch auf SQL Server – Mihai

+4

[Schlechte Gewohnheiten zu treten: mit alten Stil JOIN] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10 /08/bad-habits-to-kick-using-old-style-joins.aspx) - Diese alte * durch Kommas getrennte Liste von Tabellen * style wurde durch die * richtige * ANSI 'JOIN'-Syntax in ANSI ersetzt - ** 92 ** SQL Standard (** vor mehr als 20 Jahren **) und seine Verwendung wird abgeraten –

+1

@Mihai es funktioniert auf SQL-Server. marc_s danke für die Eingabe, habe geändert, um nach Rich Benners Lösung unten beizutreten. – CypherNet

Antwort

5

Sie wollen nur nach st.Code gruppieren. Ich würde auch aus der Gewohnheit dieses kartesischen join und where Klausel herauskommen. Verwenden Sie einfach eine richtige INNER JOIN:

SELECT st.[code], SUM(whst.WHQtyOnHand) 
FROM dbo.[StkItem] st 
INNER JOIN dbo.WhseStk whst 
    ON whst.WHStockLink = st.StockLink 
WHERE whst.WHWhseID IN (3,4) 
    AND st.Code = 'BNV203N' 
GROUP BY st.[Code] 
+3

upvoted für die Beratung richtige (nicht prähistorische) 'Join' Syntax –

+1

Danke für den zusätzlichen Hinweis auf die Joins @Rich – CypherNet

4

Ändern Sie diese Zeile:

GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink 

zu

GROUP BY st.[Code] 

Wenn Sie Gruppe von WHWhseID, können Sie diese Zeilen auszubrechen.

+1

Danke für die Antwort @Rocky. Ich ändere meine akzeptierte Antwort auf Rich Benners unten, da er zusätzliche Ratschläge für die Verwendung von Joins bietet. Sie haben immer noch meine upvote :) – CypherNet