Einzelnen Beitrag anzeigen

BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
850 Beiträge
 
Delphi 11 Alexandria
 
#1

[SQL] Wie Gruppensumme bilden?

  Alt 3. Mär 2021, 12:29
Datenbank: Firebird • Version: 3.x • Zugriff über: IBDAC
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!
  Mit Zitat antworten Zitat