2016-08-11 1 views
0

meine SQLCodeSQL Summe kommen, wo Gruppe von

select ITM.Item_Code, 
     ITM.Item_Description, 
     --INV.QTY, 
     SUM(INV.QTY) as 'Balance QTY', 
     UN.Unit_Code 
from Inventory INV 
join Items ITM on INV.Item_ID=ITM.Item_ID 
join Units UN on ITM.Unit_ID=UN.Unit_ID 
where INV.Type1 in ('GRN','DTN','DGRN','SR','RN','SVN') AND INV.Stors_ID_1='6' 
group by INV.Item_ID 

dann ausführen, Fehler

Msg 8120, Level 16, State 1, Line 1 
Column 'Items.Item_Code' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. 

erklären mir, dies zu lösen.

Dank

+2

Zuerst sollten Sie beschreiben, was Sie erreichen möchten. –

+0

Und zweitens sollten Sie herausfinden, wie GROUP BY funktioniert. Sie können viele Ergebnisse finden, bevor Sie eine Frage stellen. –

Antwort

0

Versuchen Sie, eine stattdessen Unterabfrage korreliert:

select ITM.Item_Code, 
     ITM.Item_Description, 
     --INV.QTY, 
     (select SUM(INV2.QTY) from Inventory INV2 where INV2.Item_ID = INV.Item_ID) as 'Balance QTY', 
     UN.Unit_Code 
from Inventory INV 
join Items ITM on INV.Item_ID=ITM.Item_ID 
join Units UN on ITM.Unit_ID=UN.Unit_ID 
where INV.Type1 in ('GRN','DTN','DGRN','SR','RN','SVN') AND INV.Stors_ID_1='6' 

(Die allgemeine GROUP BY-Regel sagt: entweder Wenn eine GROUP BY Klausel angegeben ist, muss jede Spalte Verweis in der SELECT-Liste identifizieren einer Gruppierung Spalte oder sein das Argument einer Set-Funktion.)

0
select ITM.Item_Code, 
    ITM.Item_Description, 
    --INV.QTY, 
    SUM(INV.QTY) as 'Balance QTY', 
    UN.Unit_Code 
    from Inventory INV 
    join Items ITM on INV.Item_ID=ITM.Item_ID 
     join Units UN on ITM.Unit_ID=UN.Unit_ID 
    where INV.Type1 in ('GRN','DTN','DGRN','SR','RN','SVN') AND INV.Stors_ID_1='6' 
     group by INV.Item_ID,ITM.Item_Description, 

Versuchen Sie die obige Abfrage.

+0

Ungültige GROUP BY. (Kann jedoch auf älteren MySQL-Versionen ausgeführt werden und ein beliebiges Ergebnis liefern.) ' – jarlh

-1

Sie erhalten diesen Fehler, da die Spalten ITM.Item_Code, ITM.Item_Description und UN.Unit_Code im SELECT sind aber weder Argumente Aggregationsfunktionen (MAX(), MIN(), usw.), noch sind sie in der GROUP BY. Die Lösung ist einfach

select ITM.Item_Code, ITM.Item_Description, 
     SUM(INV.QTY) as [Balance QTY], 
     UN.Unit_Code 
from Inventory INV join 
    items ITM 
    on INV.Item_ID = ITM.Item_ID join 
    Units UN 
    on ITM.Unit_ID = UN.Unit_ID 
where INV.Type1 in ('GRN', 'DTN', 'DGRN', 'SR', 'RN', 'SVN') and 
     INV.Stors_ID_1 = '6' 
group by ITM.Item_Code, ITM.Item_Description, UN.Unit_Code; 
+0

Anonyme und falsche Downvotes sollten verboten werden. –