Select 'AR' , KZ05RG, KZ06RG, PROGRG,
VKGBRG, KDA5RG,
(CASE WHEN KDI8RG <> 0 THEN KDI8RG ELSE KDA8RG END),
RGJJRG, RGMMRG
Count(distinct(BENRRG))
From INFRGP
Where RGJJRG = 2006
Group by KZ05RG, KZ06RG, PROGRG, VKGBRG,
KDA5RG, KDI8RG, KDA8RG, RGJJRG, RGMMRG
Ich möchte nicht für jeden Monat einen Datensatz, sondern die Anzahl der Rechnungen für jeden Monat in einem Datensatz.
Als Beispiel hier der die Summes des Warenwerts für jeden Monat und Gesamtsumme:
Select 'UI' , KZ05RG, KZ06RG, PROGRG,
VKGBRG, KDA5RG,
(CASE WHEN KDI8RG <> 0 THEN KDI8RG ELSE KDA8RG END),
RGJJRG,
Sum(Case When RGMMRG = 1 then BWESRG else 0 End),
Sum(Case When RGMMRG = 2 then BWESRG else 0 End),
Sum(Case When RGMMRG = 3 then BWESRG else 0 End),
Sum(Case When RGMMRG = 4 then BWESRG else 0 End),
Sum(Case When RGMMRG = 5 then BWESRG else 0 End),
Sum(Case When RGMMRG = 6 then BWESRG else 0 End),
Sum(Case When RGMMRG = 7 then BWESRG else 0 End),
Sum(Case When RGMMRG = 8 then BWESRG else 0 End),
Sum(Case When RGMMRG = 9 then BWESRG else 0 End),
Sum(Case When RGMMRG = 10 then BWESRG else 0 End),
Sum(Case When RGMMRG = 11 then BWESRG else 0 End),
Sum(Case When RGMMRG = 12 then BWESRG else 0 End),
Sum(BWESRG) as GesamtSumme
From INFRGP
Where RGJJRG = 2006
Group by KZ05RG, KZ06RG, PROGRG, VKGBRG,
KDA5RG, KDI8RG, KDA8RG, RGJJRG
Hier sagt SQL/400 "Spalte RGMMRG oder Ausdruck in SELECT-Liste nicht gültig."
Select 'AR' , KZ05RG, KZ06RG, PROGRG,
VKGBRG, KDA5RG,
(CASE WHEN KDI8RG <> 0 THEN KDI8RG ELSE KDA8RG END),
RGJJRG,
(Case When RGMMRG = 1 then Count(distinct(BENRRG)) else 0 End),
Count(distinct(BENRRG))
From INFRGP
Where RGJJRG = 2006
Group by KZ05RG, KZ06RG, PROGRG, VKGBRG,
KDA5RG, KDI8RG, KDA8RG, RGJJRG
Da muß es doch eine Lösung geben.... :confused:
Wenn du Group By verwendest, musst du alle Felder aufführen, die keine Aggregat-Funktion haben:
'UI' ,
(CASE WHEN KDI8RG <> 0 THEN KDI8RG ELSE KDA8RG END),
Spalten, die nicht selektiert sind, dürfen in Group By auch nicht vorkommen:
KDI8RG, KDA8RG
Der Syntax-Checker liefert da ggf. auch mal falsche Hinweise.
Ist das Feld RGMMRG denn auch tatsächlich in der Datei ?
count(distinct (Case When RGMMRG = 1 then BENRRG else NULL End)),
Die Aggregatfunktion muss aussen liegen !
NULL wird nicht mitgezählt.
count(distinct (Case When RGMMRG = 1 then BENRRG else NULL End)),
Die Aggregatfunktion muss aussen liegen !
NULL wird nicht mitgezählt.
Super, das war's!!! :D