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

Oracle列データの転置と集約

    listagg()を使用できます ウィンドウ分析関数2回 として

    with t1( Base, End ) as
    ( 
     select 'RMSA','Item 1' from dual union all
     select 'RMSA','Item 2' from dual union all 
     select 'RMSA','Item 3' from dual union all
     select 'RMSB','Item 1' from dual union all
     select 'RMSB','Item 2' from dual union all
     select 'RMSC','Item 4' from dual 
    ),
       t2 as
    (   
    select 
           listagg(base,';') within group (order by end) 
           as key,
              end   
      from t1
     group by end 
    )
    select key, 
           listagg(end,',') within group (order by end) 
           as Products
      from t2  
     group by key
     order by products;
    
    Key           Products
    ---------     --------------
    RMSA;RMSB     Item 1, Item 2
    RMSA          Item 3
    RMSC          Item 4  
    

    デモ



    1. 巨大なテーブルのMySQL最適化

    2. DBMS_STATS.set_table_prefsを使用して、同じ所有者を持つ複数のテーブルに対してIncementalをtrueに設定するにはどうすればよいですか?

    3. PHPで単語を検索するときのMySQL5.6全文検索の問題

    4. T-SQLを使用してSQLServerでデータベースの互換性レベルを確認する方法