Auf Thema antworten

In beiden Subselects wird nur sum(spalte) abgefragt aber es steht ein GROUP BY T01.OLPRDC ganz am Ende (des Subselects). Auch wenn die Spalte T01.OLPRDC nicht angezeigt wird so wird dennoch dannach gruppiert und es können mehrere Summen zurück gegeben werden. Wenn du das GROUP BY einfach weg läßt, dann wird alles summiert und die Abfrage ist erstmal lauffähig.


Allerdings gruppierst du im Haupt-Select nach der selben Spalte daher vermute ich mal du willst nur die Summe aus Einträgen mit der selben Spalte zusammen ziehen. Das geht grundsätzlich, du kannst im Subselect Bezug nehmen auf Daten aus dem Hauptselect, also z.B. statt den GROUP BY im WHERE-Teil ergänzen:

[CODE]

AND T01.OLPRDC = hauptselect.OLPRDC[/CODE]

Hier kommt dann aber ein Problem zum tragen: Du verwendest im Hauptselect die selben Aliase wie in den Subselects, das wirst du abändern müssen:

[CODE]

SELECT

H01.OLPRDC,

sum(H01.OLITET) AS "Umsatz Aktion",

SUM(H01.OLOQTY) AS "Menge Aktion",

(

SELECT

sum(T01.OLITET)

FROM

FRI510AFWF.SROORSPL T01

JOIN FRI510AFWF.SRONAM T02 ON

T01.OLCUNO = T02.NANUM

JOIN FRI510AFWF.SRBSOH T04 ON

T01.OLORNO = T04.OHORNO

JOIN FRI510AF.SROPRG T06 ON

T01.OLPRDC = T06.PGPRDC

JOIN FRI510AF.SRBCTLD1 T03 ON

T01.OLORDT = T03.CTOTYP

WHERE

T04.OHODAT BETWEEN '20230305' AND '20230405' --Vergleichzeitraum

AND T01.OLSTAT <> 'D'

AND T01.OLIORD = 'N'

AND T01.OLORDT NOT IN ('IV', 'IS', 'BL', 'IG', 'V4', 'IU')

AND T02.NACOUN IN ('DE')

AND T04.OHHAND <> 'PSHOP'

AND T01.OLPRDC IN('38099478', '11046624')

AND T01.OLPRDC = H01.OLPRDC) AS "Umsatz Vergleich",


(

SELECT

SUM(T01.OLOQTY)

FROM

FRI510AFWF.SROORSPL T01

JOIN FRI510AFWF.SRONAM T02 ON

T01.OLCUNO = T02.NANUM

JOIN FRI510AFWF.SRBSOH T04 ON

T01.OLORNO = T04.OHORNO

JOIN FRI510AF.SROPRG T06 ON

T01.OLPRDC = T06.PGPRDC

JOIN FRI510AF.SRBCTLD1 T03 ON

T01.OLORDT = T03.CTOTYP

WHERE

T04.OHODAT BETWEEN '20230305' AND '20230405' --Vergleichzeitraum

AND T01.OLSTAT <> 'D'

AND T01.OLIORD = 'N'

AND T01.OLORDT NOT IN ('IV', 'IS', 'BL', 'IG', 'V4', 'IU')

AND T02.NACOUN IN ('DE')

AND T04.OHHAND <> 'PSHOP'

AND T01.OLPRDC IN('38099478', '11046624')

AND T01.OLPRDC = H01.OLPRDC) AS "Menge Vergleich"

FROM

FRI510AFWF.SROORSPL H01

JOIN FRI510AFWF.SRONAM H02 ON

H01.OLCUNO = H02.NANUM

JOIN FRI510AFWF.SRBSOH H04 ON

H01.OLORNO = H04.OHORNO

JOIN FRI510AF.SROPRG H06 ON

H01.OLPRDC = H06.PGPRDC

JOIN FRI510AF.SRBCTLD1 H03 ON

H01.OLORDT = H03.CTOTYP

WHERE

H04.OHODAT BETWEEN '20230105' AND '20230405' --Aktionszeitraum

AND H01.OLSTAT <> 'D'

AND H01.OLIORD = 'N'

AND H01.OLORDT NOT IN ('IV', 'IS', 'BL', 'IG', 'V4', 'IU')

AND H02.NACOUN IN ('DE')

AND H04.OHHAND <> 'PSHOP'

AND H01.OLPRDC IN('38099478', '11046624')

GROUP BY

H01.OLPRDC;[/CODE]

Auch wenn das Ergebnis dann eventuell stimmt hast du sehr viele, auf den ersten Blick redundante Joins. Ich denke da kann man anders vorgehen.


Zurück
Oben