sql >> Databasteknik >  >> RDS >> Mysql

MySQL dynamisk pivottabell

Eftersom värdena är i int du gör dem till kolumnnamn, du måste slå in värdena i en backtick

sql kommer att se ut så här:

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

Den fullständiga frågan kommer att vara:

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;

Se SQL-fiol med demo




  1. Gräver djupare i Django-migrationer

  2. Importera MySQL-databas till en MS SQL Server

  3. PostgreSQL, konfigurera om befintlig tabell, ändra primärnyckeln till typ=seriell

  4. Oracle Date - Hur man lägger till år till datum