Hallo Postgre-Community,
ich hab mich ma eben angemeldet, weil ich Probleme mit einer Anforderung habe.
In der Tabelle sind Buchungssätze hinterlegt. Also Buchung 400 Euro auf Konto XXX im Soll.
Ich will aus diesen Datensätzen...:
----------------------------------
Code:
HAUPK BUDAT DMBET SOHAB
11111 2001-x 300 S
11111 2001-x 150 H
11111 2001-x 100 S
11111 2001-x 350 H
...folgende Ausgabe erziehlen:
----------------------------------
Code:
HAUPK JAHR SOLL HABEN
11111 2001 400,00 500,00
...statt dessen habe ich dieses Ergebnis:
----------------------------------
Code:
HAUPK JAHR SOLL HABEN
11111 2001 400,00 0
11111 2001 0 500,00
Spaltendefinitionen:
----------------------------------
Code:
Feldname Typ Länge Kommentar
HAUPK CHAR 11 Sachkonto-(nummer)
SOHAB CHAR 1 Soll-/Habenkennzeichen (H oder S)
DMBET DEC 17 ,2 Betrag dieser Buchung
BUDAT CHAR 10 Buchungsdatum (2001-10-23)
die Spalten in der Where Klausel sind weitesgehend uninteressant und grenzen den Ergebnisbereich aufs gewünschte ein.
Es geht um folgende kleine Abfrage:
---------------------------
Code:
SELECT
HAUPK AS SACHKONTO,
CASE
WHEN SOHAB = 'S'
THEN -SUM(DMBET)
END AS SOLLJAHR,
CASE
WHEN SOHAB = 'H'
THEN SUM(DMBET)
END AS HABENJAHR
FROM tabelle
WHERE
KNZNR='1' AND
MANDA='01' AND
WERKE=' ' AND
BUCHS LIKE '501' AND
BUDAT LIKE '2001%'
GROUP BY
HAUPK, SOHAB
ORDER BY
HAUPK ---------------------------
die spalte "SOLLJAHR" soll negativ dargestellt werden, darum das '-' vor SUM... funktioniert auch wie gewünscht!
Ich müsste die Gruppierung nach SOHAB rausnehmen.. dann unterscheidet er nicht mehr nach dem SOHAB-Kennzeichen... wenn ich es aus der GROUP-BY Klausel raus nehme kommt der Fehler : "ORA-00979 Kein GROUP-BY Ausdruck".
Die Datenbank ist eine Oracle 10.2.
Vielen Dank für eure Hilfe, ich bin fast sicher es gibt eine einfache Lösung!
Gruß
Kreakworld
Lesezeichen