Wie im Handbuch dokumentiert, gibt es keine Funktion month()
in Oracle. Und der Monat ohne Jahr wäre ja sowieso wenig hilfreich
Du kannst z.B. to_char() verwenden:
[code]select to_char(datum, 'yyyy-mm') as monat,
arbeitsstation,
sum(anzahl) as anzahl
from raw_table
group by to_char(datum, 'yyyy-mm'), arbeitsstation
order by 1, 2[/code]
Das kann man dann als Grundlage für ein PIVOT verwenden:
[code]
with grouped as (
select to_char(datum, 'yyyy-mm') as monat,
arbeitsstation,
sum(anzahl) as anzahl
from raw_table
group by to_char(datum, 'yyyy-mm'), arbeitsstation
)
select *
from grouped
pivot (
max(anzahl) as anzahl
for arbeitsstation in (1, 2, 3, 4)
);
[/code]
Alternativ kann man auch eine bedingte Aggregation mittels eine CASE Ausdrucks verwenden:
[code]
select to_char(datum, 'yyyy-mm') as monat,
sum(case when arbeitsstation = 1 then anzahl end) as anzahl_as_1,
sum(case when arbeitsstation = 2 then anzahl end) as anzahl_as_2,
sum(case when arbeitsstation = 3 then anzahl end) as anzahl_as_3,
sum(case when arbeitsstation = 4 then anzahl end) as anzahl_as_4
from raw_table
group by to_char(datum, 'yyyy-mm')
[/code]