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

複数の値列を持つピボット/クロス集計

    1つの方法は、複合型を使用することです。

    CREATE TYPE i2 AS (a int, b int);
    

    または、アドホック使用の場合(セッション中にタイプを登録します):

    CREATE TEMP TABLE i2 (a int, b int);
    

    次に、ご存知のとおりクロス集計を実行し、複合型を分解します。

    SELECT client_id
         , (a0).a AS a0_cur_val, (a0).b AS a0_fut_val
         , (a1).a AS a1_cur_val, (a1).b AS a1_fut_val
         , (a2).a AS a2_cur_val, (a2).b AS a2_fut_val
    FROM   crosstab(
           'SELECT client_id, asset_type, (current_value, future_value)::i2
            FROM   foo
            ORDER  BY 1,2'
    
          ,'SELECT * FROM generate_series(0,2)'
       ) AS ct (client_id int, a0 i2, a1 i2, a2 i2);
    

    すべての括弧は必須です。 !

    crosstab()の基本 :




    1. 日本語の文字を使用したMySQL

    2. mysqlDataSourceを使用したjavax.naming.NoInitialContextException

    3. PostgreSQLの子テーブルからデータを選択するにはどうすればよいですか?

    4. キーボードから入力した内容がrlwrapで冗長にエコーされるのはなぜですか?