将数据从一个表格转移到另一个表格?
问题描述:
以下是我的问题here以及一些有用的建议。将数据从一个表格转移到另一个表格?
我目前有一个表的列是年龄范围(0-10,10-20等),并包含一个整数人口值。
我创建了一个新表,我想成从第一台透视数据,并将其插入到新表,其中从第一个表中的一行将需要在新表七行。例如。一行:
Id | Region | 0 | 10 | 20 | 30 | 40 | 50
-----------------------------------------
01 | London | 24 | 45 | 38 | 29 | 36 | 49
成为
Id | Region | AgeRange | Population
-----------------------------------
1 | 1 | 0 | 24
2 | 1 | 10 | 45
3 | 1 | 20 | 38
(与行的其余部分,但你的想法)
会是怎样建议我去这样做呢?
答
首先使用UNION ALL
到UNPIVOT您的列,然后使用变量分配ROW_NUMBER或ID
SELECT t.*, @id := @id + 1 as rn
FROM (
SELECT Region, 0 AgeRange, `0` as Population
FROM YourTable
UNION ALL
SELECT Region, 10 as AgeRange,`10` as Population
FROM YourTable
UNION ALL
SELECT Region, 20 as AgeRange, `20` asPopulation
FROM YourTable
UNION ALL
SELECT Region, 30 as AgeRange, `30` asPopulation
FROM YourTable
UNION ALL
SELECT Region, 40 as AgeRange, `40` asPopulation
FROM YourTable
UNION ALL
SELECT Region, 50 as AgeRange, `50` asPopulation
FROM YourTable
) t
CROSS JOIN (SELECT @id := 0) var
ORDER BY Region, AgeRange
输出
是多少列固定? –
换句话说,如果解决方案各不相同,真的只有0-50甚至更多的列,如0-100或0-1000。 – Parfait
列数是固定的。在它5周的上升到95 – Drummad