2017-04-10 137 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

相關問題