2 Summen in einer Abfrage mit Bedingung erstellen
Hallo,
es wäre gegeben eine Tabelle mit folgenden Feldern:
Umsatz, PLZ_Rechnungsempfänger, PLZ_Warenempfänger
Ich würde jetzt gerne sowas sehen wollen wie
UmsatzRE bezogen auf PLZ_Rechnungsempfänger
UmsatzLS bezogen auf PLZ_Warenempfänger
Raus kommen soll:
es wäre gegeben eine Tabelle mit folgenden Feldern:
Umsatz, PLZ_Rechnungsempfänger, PLZ_Warenempfänger
Ich würde jetzt gerne sowas sehen wollen wie
UmsatzRE bezogen auf PLZ_Rechnungsempfänger
UmsatzLS bezogen auf PLZ_Warenempfänger
Umsatz PLZRE PLZLS
100 59 38
100 59 37
200 38 37
Raus kommen soll:
UmsatzRE UmsatzLS PLZ
200 59
200 100 38
300 37
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 526790
Url: https://administrator.de/contentid/526790
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
9 Kommentare
Neuester Kommentar
Moin,
was fehlt: alle wichtigen Informationen...
was fehlt: alle wichtigen Informationen...
Moin,
wie @Kraemer schon schrieb, es fehlt an Infos.
Daher von mir auch nur recht oberflächlich:
Gruß
em-pie
wie @Kraemer schon schrieb, es fehlt an Infos.
Daher von mir auch nur recht oberflächlich:
SELECT
ISNULL(myGroup1.PLZ, myGroup2.PLZ) as PLZ
, myGroup1.Umsatz
, myGroup2.Umsatz
FROM
(Select PLZ=PLZWarenempfänger, SUM(Umsatz) as Umsatz where PLZWarenempfänger is not NULL Group by PLZWarenempfänger) as myGroup1
FULL OUTER JOIN (Select PLZ=PLZRechnungsempfänger , SUM(Umsatz) as Umsatz where PLZRechnungsempfänger is not NULL group by PLZWarenempfänger) as myGroup2
on myGroup1.PLZ = myGroup2.PLZ
Gruß
em-pie
du suchst GROUPING SETS:
test=*# select * from aximand ;
betrag | r | l
--------+----+----
1000 | 59 | 38
500 | 59 | 35
300 | 55 | 35
100 | 55 | 32
(4 rows)
test=*# select r,l,sum(betrag) from aximand group by grouping sets((r,l),(r),(l),());
r | l | sum
----+----+------
| | 1900
55 | 35 | 300
59 | 35 | 500
55 | 32 | 100
59 | 38 | 1000
55 | | 400
59 | | 1500
| 32 | 100
| 38 | 1000
| 35 | 800
(10 rows)
Als Ergebnis soll rauskommen:
1 SUMME-RE=0, SUMME-LS=0
2 SUMME-RE=0, SUMME-LS=0
...
32 SUMME-RE=0 SUMME-LS=100
...
35 SUMME-RE=0, SUMME-LS=800
...
38 SUMME-RE=0, SUMME-LS=1000
...
55 SUMME-RE=400, SUMME-LS=0
...
59 SUMME-RE=1500, SUMME-LS=0
...
1 SUMME-RE=0, SUMME-LS=0
2 SUMME-RE=0, SUMME-LS=0
...
32 SUMME-RE=0 SUMME-LS=100
...
35 SUMME-RE=0, SUMME-LS=800
...
38 SUMME-RE=0, SUMME-LS=1000
...
55 SUMME-RE=400, SUMME-LS=0
...
59 SUMME-RE=1500, SUMME-LS=0
...
Und das klappt mit meinem obigen Beispiel nicht?
Du musst doch „nur“ zwei eigenständige gruppierte Tabellen bilden und die mit einem Full Outer Join verketten...
Oder kann deine DB2 auf der AS400 das nicht?
Soviel zum Thema fehlende Infos. Raten im freien Fall...: