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

Oracle SQL ピボット クエリ テーブル

    ここにいます:

    with w(time, ID, Page) as
    (
      select '9:30', 1, 'name1' from dual
      union all
      select '9:30', 1, 'name2' from dual
      union all
      select '9:30', 1, 'name3' from dual
      union all
      select '9:30', 2, 'name4' from dual
      union all
      select '9:30', 2, 'name5' from dual
      union all
      select '7:30', 3, 'name1' from dual
    )
    select *
    from
    (
      select w.time, w.id, w.page, row_number() over (partition by w.time, w.id order by w.page) rnk
      from w
    )
    pivot (max(page) for rnk in (1 as page1, 2 as page2, 3 as page3))
    order by 1, 2
    ;
      

    これにより:

    TIME    ID    PAGE1    PAGE2    PAGE3
    7:30    3     name1        
    9:30    1     name1    name2    name3
    9:30    2     name4    name5    
      


    1. Sqlサーバー2008でnvarcharをbigintに変換します

    2. 冗長データのデータベースをクリーンアップする

    3. Oracle PL / SQLを使用して、特定のOracleソース表から10個の同様の表を作成する方法

    4. PostgreSQL9.5でMERGEを作成する