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

BigqueryでSelectを使用して行データから列を動的に作成する

    以下はBigQuery用です!

    注意:出力列名に関する期待は正しくありません!
    列名を数字で始めることはできません-したがって、以下の例では、1、2、および3の代わりにid_1、id_2、およびid_3を使用します

    SELECT
      SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,
      SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,
      SUM(CASE WHEN id = 3 THEN 1 END) AS id_3
    FROM YourTable
    

    上記の例では、IDが事前にわかっていて、IDが非常に少ないことを前提としているため、IDごとにSUM(...)を使用して手動で数行を書き込むことは大したことではありません。

    そうでない場合は、以下のクエリを実行することにより、最初にプログラムで上記のクエリを生成できます

    SELECT 'SELECT ' + 
       GROUP_CONCAT_UNQUOTED(
          'SUM(CASE WHEN id = ' + STRING(id) + ' THEN 1 END) AS id_' + STRING(id)
       ) 
       + ' FROM YourTable'
    FROM (
      SELECT id FROM (
        SELECT * FROM YourTable GROUP BY id ORDER BY id
    )
    

    結果として、以下のような文字列が得られます

    SELECT SUM(CASE WHEN id = 1 THEN 1 END) AS id_1,SUM(CASE WHEN id = 2 THEN 1 END) AS id_2,SUM(CASE WHEN id = 3 THEN 1 END) AS id_3 FROM YourTable
    

    だから、今それをコピーしてクエリエディタに貼り付けて実行するだけです

    ここで同様の例を見ることができます- https://stackoverflow.com/a/36623258/5221944 >




    1. PHPを使用して.pdfファイルをBLOBとしてMySQLに保存するにはどうすればよいですか?

    2. MySQLレプリケーションのトラブルシューティング:パート2

    3. rand()によるmysqlの順序パフォーマンスの問題と解決策

    4. PostgreSQLでONCONFLICTを使用してRETURNINGを使用するにはどうすればよいですか?