Eine Quelltabelle zweimal mit verschiedenen Zeiträumen durchsuchen und alles in nur eine Zieltabelle

Christian_T

Benutzer
Beiträge
8
Hallo Leute,

ich habe da mal wieder eine Aufgabe. ;-)

Quelltabelle:
Datum | Stundenart | Stunden
01.02.2015 Urlaub 10
01.03.2015 Krank 10
01.04.2015 Urlaub 10
01.02.2014 Urlaub 10
01.03.2014 Sonderurlaub 10

Ich möchte mit EINEM Aufruf einer Stored Procedure folgende Zieltabelle erreichen:
Stundenart | Summe2015 | Summe2014
Urlaub 20 10
Krank 10 0

Mir fehlt momentan die Idee wie ich in einem Aufruf an alle Infos komme. :-(

Besten Dank im voraus,
Christian
 
Werbung:
Wie kann ich in der GROUP BY den Zeitraum angeben in dem gruppiert werden soll?
z. B. Datum >= 01.01.2015 AND Datum <= 31.12.2015
und dann nochmal ein GROUP BY für 2014??
 
Code:
test=*# select * from christian ;
  datum  |  stundenart  | stunden
------------+--------------+---------
 2015-02-01 | urlaub  |  10
 2015-03-01 | krank  |  10
 2015-04-01 | urlaub  |  10
 2014-02-01 | urlaub  |  10
 2014-03-01 | sonderurlaub |  10
(5 rows)

test=*# select stundenart, sum(stunden) filter (where extract(year from datum) = 2014) as "Summe2014", sum(stunden) filter (where extract(year from datum) = 2015) as "Summe2015" from christian group by stundenart;
  stundenart  | Summe2014 | Summe2015
--------------+-----------+-----------
 urlaub  |  10 |  20
 sonderurlaub |  10 |
 krank  |  |  10
(3 rows)
 
Code:
test=*# select stundenart, sum(stunden) filter (where extract(year from datum) = 2014) as "Summe2014", sum(case when extract(year from datum) = 2015 then stunden else 0 end) as "so geht es mit case when ..."  from christian group by stundenart;
  stundenart  | Summe2014 | so geht es mit case when ...
--------------+-----------+------------------------------
 urlaub  |  10 |  20
 sonderurlaub |  10 |  0
 krank  |  |  10
(3 rows)
 
Werbung:
Zurück
Oben