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

複数の日付列を持つmysqlでのピボット解除に関するヘルプが必要

    MySQL8.0.1で以下をテストしました。

    SELECT GROUP_CONCAT(
      CONCAT(
        'SELECT `Product Type`, ', 
           QUOTE(COLUMN_NAME), ' AS `Date`, ',
           '`', COLUMN_NAME, '` AS `Revenue` ',
        'FROM testing_unpivot'
      ) SEPARATOR ' UNION ALL '
    )
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'testing_unpivot'
    AND COLUMN_NAME <> 'Product Type';
    

    QUOTE()関数 を使用する トリプルクォートとクワッドクォートを理解する必要がなくなるため、簡単になります。

    出力:

    SELECT `Product Type`, '01-31-2016' AS `Date`, `01-31-2016` AS `Revenue` FROM testing_unpivot 
    UNION ALL 
    SELECT `Product Type`, '02-29-2016' AS `Date`, `02-29-2016` AS `Revenue` FROM testing_unpivot 
    UNION ALL 
    SELECT `Product Type`, '12-31-2015' AS `Date`, `12-31-2015` AS `Revenue` FROM testing_unpivot
    

    次に、コピーして貼り付けてそのクエリを実行し、次の出力を取得しました:

    +--------------+------------+---------+
    | Product Type | Date       | Revenue |
    +--------------+------------+---------+
    | A            | 01-31-2016 |  400.00 |
    | B            | 01-31-2016 |   86.88 |
    | C            | 01-31-2016 |  400.00 |
    | D            | 01-31-2016 |   55.00 |
    | E            | 01-31-2016 |  455.00 |
    | A            | 02-29-2016 |   55.00 |
    | B            | 02-29-2016 |   55.00 |
    | C            | 02-29-2016 |   55.00 |
    | D            | 02-29-2016 |   11.00 |
    | E            | 02-29-2016 |   22.00 |
    | A            | 12-31-2015 |  100.00 |
    | B            | 12-31-2015 |    0.00 |
    | C            | 12-31-2015 |  200.00 |
    | D            | 12-31-2015 |  300.00 |
    | E            | 12-31-2015 |  400.00 |
    +--------------+------------+---------+
    

    テストデータに最初の3日間分のデータをロードしました。




    1. MySQL / MariaDB/Perconaサーバーのアップグレードプロセスの自動テスト

    2. 異なるバージョンのMySQLGroupBy機能

    3. mysqlをswiftに接続する方法は?

    4. group_concatを使用して値を引用する方法