2017-04-10 138 views
0

以下是我的问题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 

(与行的其余部分,但你的想法)

会是怎样建议我去这样做呢?

+0

是多少列固定? –

+1

换句话说,如果解决方案各不相同,真的只有0-50甚至更多的列,如0-100或0-1000。 – Parfait

+0

列数是固定的。在它5周的上升到95 – Drummad

回答

1

首先使用UNION ALL到UNPIVOT您的列,然后使用变量分配ROW_NUMBER或ID

SQL DEMO

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 

输出

enter image description here

+0

感谢您的回答实际的表,我只是在努力理解这是怎么回事的。这是从新表中选择,我试图填充,因为它有AgeRange和Population字段? – Drummad

+1

用示例检查更新版本。 –

+0

现在完美运行,谢谢! – Drummad

相关问题