Einnahmen und Ausgaben gruppiert nach Monat

Netprog

Benutzer
Beiträge
10
Hallo,

ich komme irgendwie mal wieder nicht weiter und hoffe auf Eure Hilfe.
Zu meinem Problem, ich habe eine Tabelle kontoauszug, in der Beträge (amount) und das enstsprechende Datum (entrydate) gespeichert sind. Nun wollte ich wenn amount < 0 die Summe der Ausgaben gruppiert nach Monat und wenn amount > 0 die Summe der Einnahmen gruppiert nach Monat ausgeben lassen. Folgenden Code hab ich jetzt, aber irgendwie fehlen mir die Summen gruppiert nach Monat. Was mache ich falsch?


Code:
SELECT IIF(amount <0, sum(amount) , 0) AS ausgaben,
       IIF(amount >0, sum(amount) , 0) AS einnahmen,
       MONTH(entrydate) AS monat           
 
FROM kontoauszug
 
WHERE YEAR(EntryDate) = '2013'
 
GROUP BY MONTH(entrydate), amount
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.028
Hallo,

ich komme irgendwie mal wieder nicht weiter und hoffe auf Eure Hilfe.
Zu meinem Problem, ich habe eine Tabelle kontoauszug, in der Beträge (amount) und das enstsprechende Datum (entrydate) gespeichert sind. Nun wollte ich wenn amount < 0 die Summe der Ausgaben gruppiert nach Monat und wenn amount > 0 die Summe der Einnahmen gruppiert nach Monat ausgeben lassen. Folgenden Code hab ich jetzt, aber irgendwie fehlen mir die Summen gruppiert nach Monat. Was mache ich falsch?


Code:
SELECT IIF(amount <0, sum(amount) , 0) AS ausgaben,
      IIF(amount >0, sum(amount) , 0) AS einnahmen,
      MONTH(entrydate) AS monat         
 
FROM kontoauszug
 
WHERE YEAR(EntryDate) = '2013'
 
GROUP BY MONTH(entrydate), amount


Access?

Egal, in PG z.B. so:

Code:
test=*# select * from netprog ;
   datum    | betrag
------------+--------
 2013-01-01 |     10
 2013-01-02 |    -20
 2013-01-02 |    -20
 2013-01-03 |    -30
 2013-02-01 |     30
 2013-03-01 |    -40
 2013-03-02 |      5
(7 rows)

Time: 0,190 ms
test=*# select to_char(datum,'yyyy-mm') as monat, sum(case when betrag > 0 then betrag else 0 end) as einnahmen, sum(case when betrag < 0 then betrag else 0 end) as ausgaben from netprog group by 1;
  monat  | einnahmen | ausgaben
---------+-----------+----------
 2013-01 |        10 |      -70
 2013-02 |        30 |        0
 2013-03 |         5 |      -40
(3 rows)

Ich denke mal, Dein GROUP BY hat ein Feld zu viel. Das richtige rauszufinden überlasse ich Dir zur Übung.
 
Werbung:

Netprog

Benutzer
Beiträge
10
Hallo akretschmer,

danke für deine Antwort & Lösung!

Ich habe es jetzt so gelöst:
Code:
SELECT MONTH(entrydate) AS monat,
       SUM(IIF(amount > 0, amount, 0)) AS einnahmen,
       SUM(IIF(amount < 0, amount, 0)) AS ausgaben
     
 
FROM kontoauszug
 
WHERE Year(EntryDate) = '2013'
 
GROUP BY MONTH(entrydate);

Also, Danke nochmal !!!!!!!!!!!!!!:)

LG Maik
 
Oben