
Die Tabelle "ausgaben" sieht so aus:
id : BIGINT, Primary Key
datum : DATE
vorzeichen : VARCHAR, enthält "+" oder "-"
betrag : FLOAT
beschreibung : VARCHAR, Freitext
typ : VARCHAR, Gruppierung der Ausgaben in verschiedene Kategorien
isEC : BOOLEAN, ob es eine Bar-Ausgabe oder eine per EC/Kreditkarte war
Alle Ausgaben pro Monat ist kein Problem:
SELECT YEAR( "datum" ), MONTH( "datum" ), SUM( "betrag" ) FROM "ausgaben" WHERE "vorzeichen" = '-' GROUP BY YEAR( "datum" ), MONTH( "datum" ) ORDER BY YEAR( "datum" ), MONTH( "datum" )
Alle Einnahmen pro Monat auch nicht:
SELECT YEAR( "datum" ), MONTH( "datum" ), SUM( "betrag" ) FROM "ausgaben" WHERE "vorzeichen" = '+' GROUP BY YEAR( "datum" ), MONTH( "datum" ) ORDER BY YEAR( "datum" ), MONTH( "datum" )
Aber wenn ich jetzt beides kombinieren will, um zu sehen, ob nun pro Monat Geld übrig ist oder nicht, wirds schwierig. Ich habs mit einem UNION probiert, aber entweder kann Base kein UNION, oder ich mach irgendwas falsch:
(SELECT YEAR( "datum" ), MONTH( "datum" ), -SUM( "betrag" ) FROM "ausgaben" WHERE "vorzeichen" = '-' GROUP BY YEAR( "datum" ), MONTH( "datum" ))
UNION ALL
(SELECT YEAR( "datum" ), MONTH( "datum" ), SUM( "betrag" ) FROM "ausgaben" WHERE "vorzeichen" = '+' GROUP BY YEAR( "datum" ), MONTH( "datum" ))
GROUP BY YEAR( "datum" ), MONTH( "datum" )
ORDER BY YEAR( "datum" ), MONTH( "datum" )
Ich habs schon nur mit UNION probiert (ohne das ALL), ich habs schon probiert, dass das ORDER BY bei jedem Statement steht, ich habs schon ohne das dritte GROUP BY probiert, ich habs schon ohne Klammern und auch ohne Zeilenumbrüche probiert, aber hat alles nichts geholfen. Auch googlen hat nicht geholfen, scheinbar benutzen Leute, die Base benutzen, nicht so häufig UNION

Die Fehlerausgabe von Base ist auch nicht so richtig hilfreich. Er sagt nur "Der gesetzte Befehl ist kein SELECT-Befehl. Es sind nur Abfragen erlaubt." oder "syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE".
Super ist auch, wenn man auf LibreOffice-Hilfe klickt, dann landet man hier: http://help.libreoffice.org/sdatabase/s ... System=WIN

Also meine Fragen sind:
- Weiß jemand eine gute Seite, die das in Base verwendete SQL erklärt?
- Weiß jemand sicher, ob UNION ALL in Base funktionieren sollte oder nicht?
- Kann jemand erkennen, wo der Fehler in meinem Statement liegt?
- Oder weiß vielleicht jemand eine bessere Möglichkeit an die gewünschte Info zu kommen als dieses Monster-Statement mit UNION und drei GROUP BYs?