Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
Delphi 6 Enterprise
|
AW: [SQL] Wie Gruppensumme bilden?
5. Mär 2021, 08:15
Vermutlich hab ich einen Denkfehler, aber macht der Join von Redeemer die Sache nicht eher schlimmer, so dass auch die Summen nicht mehr stimmen? Wenn eine Gruppe 2 Positionen hat, werden die über kreuz gejoined und ich bekomme 4 Datensätze und dann werden die gruppiert?
Das gejointe müsste mMn zuvor in einem Supselect gruppiert werden.
Kann Firebird "with"?
SQL-Code:
with Basis as (
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
)
Select B.*,
(Select sum(Menge) From Basis Where Gruppe=B.Gruppe) as Gruppenmenge
From Basis B
Das läuft in 2,5 Minuten durch. Danke! In VorgangPos sind im Moment ca. 400.000 Datensätze.
Dann versuchen wir noch eine Optimierung:
SQL-Code:
with Basis as (
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
)
Select B.*, G.Menge
From Basis B
Left Join
(Select Gruppe, sum(Menge) From Basis Group By Gruppe) G
On G.Gruppe=B.Gruppe
Ralph
|
|
Zitat
|