sql >> Base de Datos >  >> RDS >> Mysql

Tabla dinámica de MySQL

Dado que los valores están en int los está convirtiendo en los nombres de las columnas, debe envolver los valores en un acento grave

El sql se verá así:

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

La consulta completa será:

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;

Consulte SQL Fiddle con demostración