Pssst, der Parameter von SUM hießt in vielen Dokumentationen der meisten
DBMS nicht umsonst Value oder Expression und nicht Field.
http://stackoverflow.com/questions/1...ions-with-case
http://docwiki.embarcadero.com/InterBase/XE7/en/SUM(_) ... schau mal was bei <val> (Value) geschrieben steht.
Man kann bei diesen Aggregate-Funktionen auch sagen was gemacht werden soll.
Selbst ORDER BY, DISTINCT und Co. kann da verwendet werden, eventuell auch ein WHERE, je nach
DBMS.
SQL-Code:
sum(iif(Zahlung < 0, Zahlung, 0))
sum(iif(Zahlung < 0, Zahlung, NULL))
Die meisten Aggregate-Funktionen werten nur aus, wenn ein Wert ungleich 0 vorkommt,
z.B.
count(*)
zählt alle Zeilen und
count(abc)
zählz nur Datensätze, wo
abc NOT NULL
ist.
SQL-Code:
Select sum(IfThenDeinesDBMS(Zahlung > 0, Zahlung, 0)) as Einzahlungen,
sum(IfThenDeinesDBMS(Zahlung < 0, Zahlung, 0)) as Ausgabe
-- oder halt
Select sum(IfThenDeinesDBMS(KontoArt = 'E', Zahlung, 0)) as Einzahlungen,
sum(IfThenDeinesDBMS(KontoArt = 'A', Zahlung, 0)) as Ausgabe