sql >> データベース >  >> RDS >> Oracle

Oracleの日付と別の列を使用して動的ピボットを作成するにはどうすればよいですか?

    2列の日付と識別子を変換しようとしているため、2つのピボットが必要です。以下のクエリを試してください。機能するはずです。ご不明な点がございましたら、お気軽にご連絡ください。これはOracleで機能しますが、他のDBMSで試行しているかどうかはわかりません。

    select * from (
    select * from (
    with all_data as 
    (select 'NAME1' fname, 123 value, 'ATR' identif, '01-OCT-2018' mydate from dual union all
    select 'NAME1' fname, 333 value, 'QTDE' identif, '01-OCT-2018'  mydate from dual union all
    select 'NAME2' fname, 212 value, 'ATR' identif, '01-AUG-2018'  mydate from dual union all
    select 'NAME2' fname, 123 value, 'QTDE' identif, '01-AUG-2018'  mydate from dual union all
    select 'NAME2' fname, 133 value, 'ATR' identif, '01-SEP-2018'  mydate from dual union all
    select 'NAME2' fname, 123 value, 'QTDE' identif, '01-SEP-2018'  mydate from dual union all
    select 'NAME3' fname, 678 value, 'ATR' identif, '01-AUG-2018'  mydate from dual union all
    select 'NAME3' fname, 123 value, 'QTDE' identif, '01-AUG-2018'  mydate from dual )
    select identif,fname,value,mydate from  all_data)
    pivot 
    (
    sum(value)
    for mydate in ('01-AUG-2018' as "AUG-2018",'01-SEP-2018' as "SEP-2018",'01-OCT-2018' as "OCT-2018")))
    pivot
    (
    sum("AUG-2018") "08-2018"
    ,sum("SEP-2018") "09-2018"
    ,sum("OCT-2018") "10-2018"
    for identif in ('ATR' ATR,'QTDE' QTDE))
    order by 1;
    


    1. SQLデータベーステーブルのn番目の行を選択するにはどうすればよいですか?

    2. pg-promiseでヘルパーを使用するときに列を設定する方法

    3. T-SQLを使用してSQLServerデータベースをバックアップする方法

    4. Oracleの数値関数(全リスト)