sql >> Database >  >> RDS >> Mysql

MySQL dynamische draaitabel

Aangezien de waarden in int staan je maakt er de kolomnamen van, je moet de waarden in een backtick plaatsen

De sql ziet er als volgt uit:

max(case when user_id = 1 then score end) as `1`

De volledige vraag is:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Zie SQL Fiddle met demo




  1. 7 manieren om dubbele rijen te vinden terwijl u de primaire sleutel in MySQL negeert

  2. Hoe MySQL volledig van Ubuntu te verwijderen?

  3. MySQL-weergaven

  4. 2 manieren om een ​​string en een getal samen te voegen in Oracle