Auf Thema antworten

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]


Zurück
Oben