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

UNPIVOT datos mysql a otra tabla

Necesitas UNPIVOT tu información. MySQL no tiene una función integrada para hacer eso, por lo que deberá usar varias 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 columna aquí podría causar problemas. Según como lo hayas definido. Si se genera automáticamente, puede eliminarlo del INSERTAR y dejar que se genere automáticamente. Dado que tendrá filas para todos los meses con el mismo ID , necesita manejar ese escenario.