sql >> Databasteknik >  >> RDS >> Mysql

UNPIVOT mysql-data till annan tabell

Du måste UNPIVOT din data. MySQL har ingen inbyggd funktion för att göra det så du måste använda flera frågor.

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 kolumnen här kan orsaka problem. Beroende på hur du har definierat det. Om det är automatiskt genererat kan du ta bort det från INSERT och låta det genereras automatiskt. Eftersom du kommer att ha rader för alla månader med samma ID , du måste hantera det scenariot.




  1. Hur återställer man det bortglömda MySQL root-lösenordet?

  2. Vad är skillnaden mellan REFERENSER med eller utan en UTLÄNDSKNYCKEL

  3. Hur använder man parametrar i en "where value in..."-sats?

  4. Använd SERVERPROPERTY() för att få serverinformation i SQL Server