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

MySQL-動的ピボットテーブルのグループ化の問題

    次のSQLは、問題を解決するための開始点になります。

    SELECT
      es.employee_id,
      CONCAT(e.first_name, " ", e.last_name) AS employee,
      MAX(IF (es.skill_id = 1, es.date_trained, null)) AS '1',
      MAX(IF (es.skill_id = 2, es.date_trained, null)) AS '2',
      MAX(IF (es.skill_id = 3, es.date_trained, null)) AS '3'
    FROM
      employee_skills es
      LEFT JOIN employees e ON es.employee_id = e.id
    GROUP BY
      es.employee_id 
    

    結果は次のようなピボットテーブルになります:

    | employee_id | employee   | 1          | 2          | 3          |
    +-------------+------------+------------+------------+------------+
    | 1001675     | Person Two | (null)     | 2016-07-02 | 2016-07-04 |
    | 1006111     | Person One | 2016-07-01 | 2016-07-11 | (null)     |
    

    SQLが動的に作成される場合、スキルIDをスキル名に置き換えることができます。また、後でIDを置き換えることもできます。




    1. ProxySQLとAWSAuroraを使用したデータベース負荷分散

    2. パラメータを使用したPHP-OCI呼び出しストアドプロシージャ

    3. まだ存在しない場合は、テーブルに列を追加します

    4. MySQLで週ごとの成長率を計算する方法