2017-04-10 16 views
0

私の質問hereといくつかの有用なアドバイスから続きます。あるテーブルから別のテーブルへのピボットデータ?

私は現在、列が年齢範囲(0-10,10-20など)であり、母集団の整数値を含む表を持っています。

最初のテーブルからデータをピボットし、最初のテーブルの1つの行に新しいテーブルに7つの行が必要な新しいテーブルに挿入したい新しいテーブルを作成しました。例えば。

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 

なり(と行の残りの部分が、あなたのアイデアを得る)私がこれをやって行くことが示唆されるだろうどのように

:1行分の?あなたの列をアンピボットする

+0

は数です列は固定ですか? –

+1

他の言葉で言えば、実際には0〜100または0〜1000のような0〜50またはそれ以上の列があります。 – Parfait

+0

カラム数は固定です。実際のテーブルでは、5から95に上がります。 – Drummad

答えて

1

まず使用UNION ALL、その後、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 

OUTPUT

enter image description here

+0

答えがありがとう、私はここで何が起こっているのか理解するのに苦労しています。これは、AgeRangeフィールドとPopulationフィールドがあるため、新しいテーブルから選択していますか? – Drummad

+1

例を使用して更新バージョンを確認してください。 –

+0

それは今、完璧に動作します、ありがとう! – Drummad

関連する問題