gpt4 book ai didi

mysql - 将数据从一个表透视到另一个表?

转载 作者:行者123 更新时间:2023-11-29 10:53:43 25 4
gpt4 key购买 nike

根据我的问题 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 取消透视列,然后使用变量分配 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

关于mysql - 将数据从一个表透视到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43329918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com