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

Oracle行の複数の列でピボットを使用する

    ドキュメントに示されているように、複数の集計関数句を使用できます。だからあなたはこれを行うことができます:

    select * from (
      select * from tab1
    )
    pivot (
      count(type) as ct, sum(weight) as wt, sum(height) as ht
      for type in ('A' as A, 'B' as B, 'C' as C)
    );
    
    A_CT A_WT A_HT B_CT B_WT B_HT C_CT C_WT C_HT
    ---- ---- ---- ---- ---- ---- ---- ---- ----
       2  110   22    1   40    8    1   30   15 
    

    表示した順序で列が必要な場合は、別のレベルのサブクエリを追加します。

    select a_ct, b_ct, c_ct, a_wt, b_wt, c_wt, a_ht, b_ht, c_ht
    from (
      select * from (
        select * from tab1
      )
      pivot (
        count(type) as ct, sum(weight) as wt, sum(height) as ht
        for type in ('A' as A, 'B' as B, 'C' as C)
      )
    );
    
    A_CT B_CT C_CT A_WT B_WT C_WT A_HT B_HT C_HT
    ---- ---- ---- ---- ---- ---- ---- ---- ----
       2    1    1  110   40   30   22    8   15 
    

    SQLフィドル。



    1. ベースアダプタとリストビューを使用してデータベースのデータを表示する

    2. クエリ構文に置き換える

    3. HAProxyを使用してPostgreSQLレプリケーションセットアップ用の単一エンドポイントを作成する方法

    4. MySQL:列が存在しない場合はALTER TABLE