sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Dynamic Pivot Table Grouping Issue

Følgende SQL kan være et udgangspunkt for at løse problemet:

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 
 

Resultatet er en pivottabel som denne:

| 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) |

Hvis SQL oprettes dynamisk, kan færdigheds-id'erne erstattes af færdighedsnavnet. Det er også muligt at udskifte ID'erne efterfølgende.




  1. Skift primær nøgle i PostgreSQL-tabel

  2. SQL Server deterministisk brugerdefineret funktion

  3. Installation af Oracle Database 12c-software på Windows

  4. Hvad er den hurtigste måde at vælge 2 kolonner fra den samme (tilfældige) post i MySQL?