gpt4 book ai didi

sql - 多行数据变成单行(值不标准)

转载 作者:行者123 更新时间:2023-12-02 07:39:56 25 4
gpt4 key购买 nike

这是我的问题:

我有一张包含姓名和地址的表格,例如

Name  |  Address       | Updated
----------------------------------
a | 12 lane | 1/1/2011
b | 34 avenue | 1/1/2011
c | 56 district | 1/1/2011
a | 78 avenue | 8/8/2011
b | 90 lane | 8/8/2011
a | 83 district | 9/9/2011
a | 39 road | 10/10/2011

如您所见,人们可能有多个地址。假设一个人最多拥有 5 个地址。

我只对获取每个人的最新 3 个地址感兴趣,这样表格看起来像:

Name  |  Address_1      |   Address_2       |  Address_3
--------------------------------------------------------------
a | 78 avenue | 83 district | 39 road
b | 34 avenue | 90 lane | NULL
c | 56 district | NULL | NULL

注意a的第一个词条“12 lane”没有出现

我一直在阅读 stackoverflow 上显示的其他示例,但我不确定数据透视表是否适合我的需要,因为地址都不同

在此先感谢您提供的任何帮助!

最佳答案

你可以转动它。关键点是按更新的降序将 row_numbers 分配给地址。这将生成列名称 1、2 和 3(以及 4、5 - 但这些将被 pivot 命令忽略)。

Here is Sql Fiddle with example .

select name, 
[1] Address_1,
[2] Address_2,
[3] Address_3
from
(
select name,
address,
row_number() over (partition by name
order by updated desc) rn
from table1
) o
pivot (min(address) for rn in ([1], [2], [3])) p

关于sql - 多行数据变成单行(值不标准),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259207/

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