Seite 1 von 1

Pivot-Tabelle simulieren - Alternative

Verfasst: Di 30. Jan 2024, 16:41
von Freischreiber
Hallo,

bisher nutze ich für eine spaltenweise Darstellung von Buchungen nach Buchungskonten eine solche Abfrage:

Code: Alles auswählen

SELECT "t-auftrag"."ID", "t-buchungen"."Datum", "t-buchungen"."Bemerkung", "a"."Betrag +/-" "Ein0% USt. Ausland", "b"."Betrag +/-" "Ein0% USt. Eigene"
FROM "t-buchungen" 
LEFT JOIN "t-buchungen" AS "a" ON ( "t-buchungen"."ID" = "a"."ID" AND "a"."BuchungskontoID" = 0 ) 
LEFT JOIN "t-buchungen" AS "b" ON ( "t-buchungen"."ID" = "b"."ID" AND "b"."BuchungskontoID" = 1 ) 
LEFT JOIN "t-auftrag" ON ( "t-auftrag"."ID" = "t-buchungen"."AuftragID" ) ORDER BY "t-buchungen"."Datum" 
Das ist nur ein Ausschnitt, es folgen noch mehrere Spalten und dafür mehrere Left Joins, was die Sache langsam macht.

Ich bin auf der Suche nach einer Alternative hierauf gestoßen:
https://stackoverflow.com/questions/142 ... sing-joins

Schaffe aber nicht, das auf HSQL in Base zu übertragen. Sowas stelle ich mir vor, es läuft aber nicht:

Code: Alles auswählen

SELECT "t-auftrag"."ID", "t-buchungen"."Datum", "t-buchungen"."Bemerkung"
MAX(CASE WHEN t-buchungen.BuchungskontoID=0 then t.buchungen.Datum END) AS "Ein0% USt. Ausland",
MAX(CASE WHEN t-buchungen.BuchungskontoID=1 then t.buchungen.Datum END) AS "Ein0% USt. Eigene"
FROM "t-buchungen" AS "Buchung"
LEFT JOIN "t-auftrag" 
ON ( "t-auftrag"."ID" = "t-buchungen"."AuftragID" ) 
group by "t-auftrag"."ID", "t-buchungen"."Datum"
Wobei ich keine Dokumentation darüber finde, ob es in HSQL dieses "MAX" überhaupt gibt bzw. was es bewirkt.

Kann jemand helfen?

Gruß
Freischreiber