Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

UNPIVOT dados mysql para outra tabela


Você precisa UNPIVOT seus dados. O MySQL não possui uma função embutida para fazer isso, então você precisará usar várias consultas.
INSERT INTO `monthlydata` (`id`, `year`, `monthName`, `stat_id`, `cat_id`, `data`) VALUES
SELECT id, year, 'January', stat_id, cat_id, January
    FROM monthly WHERE monthName = 'January'
UNION ALL 
SELECT id, year, 'February', stat_id, cat_id, February
    FROM monthly WHERE monthName = 'February'
UNION ALL 
SELECT id, year, 'March', stat_id, cat_id, March
    FROM monthly WHERE monthName = 'March'
.....

ID coluna aqui pode causar problemas. Dependendo de como você definiu. Se for gerado automaticamente, você pode removê-lo do INSERT e deixá-lo ser gerado automaticamente. Como você terá linhas para todos os meses com o mesmo ID , você precisa lidar com esse cenário.