gpt4 book ai didi

sql - 如何将1列的数据分成3列?

转载 作者:行者123 更新时间:2023-12-04 13:40:11 25 4
gpt4 key购买 nike

数据采用给定格式-

Id      Date        Location
a123 6/6/2016 mmp
a123 6/7/2016 jpr
a123 6/8/2016 hjl
a123 6/9/2016 jhag
a678 6/10/2016 hjlwe
a678 6/11/2016 mkass
a980 6/7/2016 asdadf
a980 6/7/2016 lasdj
a980 6/7/2016 xswd


我想要相同的给定格式:

Id      Date 1      Location1   Date 2      Location 2  Date 3      Location 3
a123 6/6/2016 mmp 6/7/2016 jpr 6/8/2016 hjl
a678 6/10/2016 hjlwe 6/11/2016 mkass
a980 6/7/2016 asdadf 6/7/2016 lasdj 6/7/2016


如何在SQL中做到这一点?

最佳答案

您可以将ROW_NUMBER()与条件聚合一起使用:

SELECT s.id,
MAX(CASE WHEN s.rnk = 1 THEN s.date END) as date_1,
MAX(CASE WHEN s.rnk = 1 THEN s.location END) as location_1,
MAX(CASE WHEN s.rnk = 2 THEN s.date END) as date_2,
MAX(CASE WHEN s.rnk = 2 THEN s.location END) as location_2,
MAX(CASE WHEN s.rnk = 3 THEN s.date END) as date_3,
MAX(CASE WHEN s.rnk = 3 THEN s.location END) as location_3
FROM(
SELECT t.*,
ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.Date) as rnk
FROM YourTable t) s
GROUP BY s.id


这也可以用 PIVOT解决,但是我更喜欢使用条件聚合,只要列的数量是有限的即可。

如果您需要添加更多级别,只需遵循逻辑并用 3替换 4等。

关于sql - 如何将1列的数据分成3列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37651176/

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