gpt4 book ai didi

Mysql 将重复数据的行位置更改为列位置

转载 作者:行者123 更新时间:2023-11-29 18:02:50 24 4
gpt4 key购买 nike

我需要将行从重复的 id 更改为列。
该示例将更好地解释我的问题

我有:

+----+-----------+-------+
| id | id_data | values|
+----+-----------+-------+
| 1 | 1 | data1 |
+----+-----------+-------+
| 2 | 1 | data2 |
+----+-----------+-------+
| 3 | 1 | data3 |
+----+-----------+-------+
| 4 | 2 | data4 |
+----+-----------+-------+
| 5 | 2 | data5 |
+----+-----------+-------+

我想要什么:

+----+---------+---------+---------+---------+
| id | id_data | option1 | option2 | option3 |
+----+---------+---------+---------+---------+
| 1 | 1 | data1 | data2 | data3 |
| 2 | 2 | data4 | data5 | 0 |
+----+---------+---------+---------+---------+

最佳答案

使用条件聚合。仅当 id 按顺序增长 1 时,以下代码才能正常工作。

select t.id_data,
max(case when cn = 0 then values end) as option1,
max(case when cn = 1 then values end) as option2,
max(case when cn = 2 then values end) as option3
from
(
select *,
id - (select min(id) from data d2 where d1.id_data = d2.id_data) cn
from data d1
) t
group by t.id_data

dbfiddle demo

如果 id 值中存在“间隙”,则可以使用自连接计算 cn

关于Mysql 将重复数据的行位置更改为列位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182216/

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