Mysql
 sql >> Base de données >  >> RDS >> Mysql

UNPIVOT données mysql à une autre table

Vous devez UNPIVOT vos données. MySQL n'a pas de fonction intégrée pour le faire, vous devrez donc utiliser plusieurs requêtes.

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 colonne ici peut causer des problèmes. Selon la façon dont vous l'avez défini. S'il est généré automatiquement, vous pouvez le supprimer de l'INSERT et le laisser être généré automatiquement. Puisque vous aurez des lignes pour tous les mois avec le même ID , vous devez gérer ce scénario.