Ich habe eine Tabelle, in der Vorgangspositionen (die einzelnen Artikel einer Rechnung) enthalten sind. Diese möchte ich zusammengefasst (group by) nach ArtikelNr ausgeben. Zu jeder ArtikelNr sollen weitere Felder ausgeben werden, so wie hier:
Code:
select
substring(ArtikelNr from 1 for 5) as "Gruppe",
ArtikelNr,
max(Beschreibung) as Beschreibung, max(Farbe) as Farbe,
sum(Menge) as Menge, sum(NettoSumme) as NettoSumme
from VorgangPos vp
group by ArtikelNr
order by ArtikelNr
Das klappt gut. Sieht z.B. so aus:
Code:
Gruppe ArtikelNr Beschreibung Farbe Menge NettoSumme
12345 12345-7 Mauspad blau 2 12,-
12345 12345-14 Maus grau 3 50,-
45678 45678-2 Tastatur grau 1 70,-
Jetzt möchte ich zusätzlich noch zu jeder ArtikelNr, die die selbe Gruppe hat, die Gesamtsumme aller Mengen in dieser Gruppe ausgeben. Z.B. so:
Code:
Gruppe ArtikelNr Beschreibung Farbe Menge NettoSumme Gruppenmenge
12345 12345-7 Mauspad blau 2 12,- 5 (da 2+3 =5)
12345 12345-14 Maus grau 3 50,- 5 (da 2+3 =5)
45678 45678-2 Tastatur grau 1 70,- 1
Mein Versuch sieht so aus:
Code:
select
substring(ArtikelNr from 1 for 5) as "Gruppe",
ArtikelNr,
max(Beschreibung) as Beschreibung, max(Farbe) as Farbe,
sum(Menge) as Menge, sum(NettoSumme) as NettoSumme,
min((
select sum(Menge) from VorgangPos vpSub
where substring(vpSub.ArtikelNr from 1 for 5) = substring(vp.ArtikelNr from 1 for 5)
)) as Gruppenmenge
from VorgangPos vp
group by ArtikelNr
order by ArtikelNr
Über Delphi läuft das endlos (nach 10 Minuten aufgegeben). Mit dem IBExpert ist das auch nicht ausführbar, der friert dann ein, wenn er das Ergebnis anzeigen möchte.
Die Gruppe ist (leider) in der ArtikelNr gespeichert. Es kann nichts an der Datenstrutkur geändert werden. Der Bindestrich dort ist nur zur besseren Übersicht eingefügt.
Was mache ich falsch? Wie geht's richtig? Danke!