group by - Abfrage

In etwa so:
Code:
Select
x.ARTIKEL
,x.AUFTRAG
,x.GESCH_BER
,x.KENN_RE
,x.BEZEICH
,x.AP_Jahr
,sum(x.Menge) AS Menge

FROM (

select
ap.AUFTRAG
,ap.MENGE
,ap.ARTIKEL
,ap.KENN_RE
,Year(ap.DAT_NEU) as AP_Jahr
,ap.BEZEICH
,ak.GESCH_BER

FROM KAVV0101 as ap

inner join KAVV000 as ak on ak.AUFTRAG = ap.AUFTRAG

) as x

where x.ARTIKEL > '0' and x.KENN_RE = 'F' and x.ARTIKEL NOT LIKE 'CS%' and x.ARTIKEL NOT LIKE 'MV%'

group by x.ARTIKEL,x.AUFTRAG,x.GESCH_BER,x.KENN_RE,x.BEZEICH,x.AP_Jahr
order by x.ARTIKEL
Im inneren Select wird nur gejoint und alle Datensätze werden zurück gegeben. Der Äußere gruppiert und aggregiert dann die Daten, in diesem Fall nur Menge. Wenn du jetzt eine Spalte wie BEZEICH raus läßt (sowohl aus dem Select als auch aus dem GROUP BY) wird die Summe von Menge für alle BEZEICH in einer Zahl ausgegeben, läßt du es drin wird für jede BEZEICH eine eigene Menge ermittelt. Natürlich kannst du auch mehrere Spalten mit Aggregatfunktionen (min(), max(), avg,(), etc.) ausgeben, das macht aber eigentlich nur bei Zahlen Sinn.
 
Werbung:
Zurück
Oben