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

BigQueryの転置

    現時点では、BigQueryでこれを行うための優れた方法はありませんが、以下のアイデアに従って行うことができます

    ステップ1

    クエリの下で実行

    SELECT 'SELECT [group], ' + 
       GROUP_CONCAT_UNQUOTED(
          'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
       ) 
       + ' FROM YourTable GROUP BY [group] ORDER BY [group]'
    FROM (
      SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
    )
    

    その結果、以下のような文字列が得られます(読みやすくするために以下の形式になっています)

    SELECT 
        [group], 
        SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
        SUM(IF([date] = "date2", value, NULL)) AS [d_date2] 
    FROM YourTable 
    GROUP BY [group] 
    ORDER BY [group]   
    

    ステップ2

    上記の構成されたクエリを実行するだけです

    結果は以下のようになります

    group   d_date1 d_date2  
    group1  15      30      
    

    注1 :ステップ1は、手作業が多すぎる場合にピボットするグループが多い場合に役立ちます。この場合-ステップ1は、クエリの生成に役立ちます

    注2 :これらの手順は、選択した任意のクライアントに簡単に実装できます。または、BigQueryWebUIで実行することもできます

    ピボットの詳細については、他の投稿をご覧ください。

    BigQueryでピボットをスケーリングする方法
    注意–テーブルあたりの列数は10Kに制限されているため、10Kの組織に制限されています。
    以下に簡略化された例を示します(上記の例が複雑すぎる/冗長すぎる場合):
    BigQuery / SQLで大量のデータを含む列に行を転置するにはどうすればよいですか?
    Google BigQueryで数千のカテゴリのダミー変数列を作成するにはどうすればよいですか?
    BigQueryの繰り返しフィールドをピボット




    1. トリガーがテーブルにある場合、OUTPUT句でUPDATEを使用することはできません

    2. 2つのテーブルをSQLJOINと組み合わせる?

    3. セッションまたはリクエストが存在しなくなったら、PostgreSQLでSQLクエリの実行を(長時間)停止しますか?

    4. node.js-sqlでパラメータをバインドして動的クエリを構築するにはどうすればよいですか?