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

postgresqlの`tablefunc`クエリにnull値を含める方法は?

    crosstab()を使用します 2つのパラメータを持つバリアント

    SELECT * FROM crosstab(
       'SELECT zone_id, group_id, area
        FROM   ct
        ORDER  BY 1,2'
    
       ,'SELECT g FROM generate_series(1,8) g'  -- ! Provide values explicitly
       )
    AS ct(
         row_name integer
       , g_1 float8, g_2 float8
       , g_3 float8, g_4 float8
       , g_5 float8, g_6 float8
       , g_7 float8, g_8 float8);
    

    これにより、どの値がどの出力列に入るのかを明示的に宣言します。したがって、関数はNULLを入力する場所を認識しています。 値。この場合、generate_series() 1〜8の数字で8行を提供するのに便利です。 VALUES 式は代替手段になります:

    'VALUES (1), (2), (3), (4), (5), (6), (7), (8)'
    

    また、ORDER BYも忘れないでください 最初のパラメータクエリの句。

    この関連する回答で詳細な説明を提供しました



    1. mysqlのようなパフォーマンスの向上

    2. Oracle 12cでは、外部結合を特徴とするクエリの動作が異なります。

    3. 矢印表記

    4. 郵便番号の指定された距離内にあるすべての郵便番号を検索します