Group by (Oracle)

Amparanoia

Grünschnabel
Hallo,

möchte den Umsatz pro Lieferant ausgeben :

select l.lieferant,
((select sum(Betrag) from umsatz
where mandant = 1
and lieferant = l.lieferant
and kz <> 'L'
) -
(select sum(Betrag) from umsatz
where mandant = 1
and lieferant = l.lieferant
and kz = 'L'
)) summe_umsatz
from umsatz l
where l.mandant = 1
group by l.lieferant

Oracle liefert 'Kein Group by Ausdruck' zurück

was mache ich falsch ?:confused:
 
Als erstes mal das SQL in eine lesbare Form bringen
SQL:
SELECT 
	l.lieferant,
	(
		(
			SELECT sum(Betrag) 
			FROM umsatz
			WHERE mandant = 1
				AND lieferant = l.lieferant
				AND kz <> 'L'
		) -
		(
			SELECT sum(Betrag) 
			FROM umsatz
			WHERE mandant = 1
				AND lieferant = l.lieferant
				AND kz = 'L'
		)
	) summe_umsatz
FROM umsatz l
WHERE l.mandant = 1
GROUP BY l.lieferant
Dann sieht man auch ganz schnell, dass du auf liefernat gruppiertst und mit dem berechneten Feld summe_umsatz keine Gruppierungsfunktion machst.

Du solltest das noch in SUM() einpacken (Zeile 3)
SQL:
SELECT 
	l.lieferant,
	SUM(
		(
			SELECT sum(Betrag) 
			FROM umsatz
			WHERE mandant = 1
				AND lieferant = l.lieferant
				AND kz <> 'L'
		) -
		(
			SELECT sum(Betrag) 
			FROM umsatz
			WHERE mandant = 1
				AND lieferant = l.lieferant
				AND kz = 'L'
		)
	) summe_umsatz
FROM umsatz l
WHERE l.mandant = 1
GROUP BY l.lieferant
 
Zuletzt bearbeitet von einem Moderator:
Zurück