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

MySQLでクロス集計/ピボットクエリを使用することは可能ですか?

    このクエリを使用できます-

    SELECT
      supplier_id,
      MAX(IF(date = '2012-01-01', value, NULL)) AS '2012-01-01',
      MAX(IF(date = '2012-01-03', value, NULL)) AS '2012-01-03',
      MAX(IF(date = '2012-05-01', value, NULL)) AS '2012-05-01'
    FROM (
      SELECT supplier_id, DATE(date) date, CONCAT(SUM(price), '(', qty, ')') value FROM supplier
        GROUP BY supplier_id, DATE(date)
        ) t
      GROUP BY supplier_id;
    
    +-------------+------------+------------+------------+
    | supplier_id | 2012-01-01 | 2012-01-03 | 2012-05-01 |
    +-------------+------------+------------+------------+
    |           1 | 500.00(2)  | 450.00(10) | NULL       |
    |           2 | 400.00(5)  | NULL       | NULL       |
    |           3 | NULL       | NULL       | 500.00(1)  |
    +-------------+------------+------------+------------+
    

    それはあなたが望む結果を生み出します。ただし、動的に実行する場合は、この記事「ピボットテーブルクエリの自動化」を参照してください- http://www.artfulsoftware.com/infotree/queries.php#523 、またはこのリンク-動的ピボットテーブル



    1. トラブルシューティング:MySQL / MariaDBエラー#1044および#1045ユーザーのアクセスが拒否されました

    2. opatchの前提条件

    3. TO_CHAR()を導入するMariaDB

    4. PostgreSQLで利用可能なデータベースダイアグラムツールの概要