在 SQL 中从多行创建一个新数组

Create a new array from multiple rows in SQL

提问人:Bocean 提问时间:11/17/2023 更新时间:11/17/2023 访问量:29

问:

我的标题可能没有很好地描述我想要做的事情,但从本质上讲,我想将多行组合成一个数组(或类似的东西)到一个新列中。

我真的只需要多行中的内容存在于一行中,特定于每个 id。

我的数据列出了用户,每一行都是新购买的(以下示例):

编号 购买记录
1 苹果
1 香蕉
1 蓝莓
2 香蕉
2 苹果

我想创建购买的“路径”,因此输出如下所示:

编号 购买路径
1 苹果, 香蕉, 蓝莓
2 香蕉, 苹果

或者甚至像这样也没关系:

编号 购买1 购买2 购买3
1 苹果 香蕉 蓝莓
2 香蕉 苹果

我尝试了一堆随机的东西(不同的数组函数、枢轴),但没有接近。有什么想法吗?

SQL 数组

评论

4赞 Bohemian 11/17/2023
您使用的是哪些 RDBMS(MySQL、Postgres、Oracle、SQL Server 等)?请将数据库的标签添加到您的问题中。请参阅此内容,了解标记为何如此重要。

答:

0赞 Littlefoot 11/17/2023 #1

根据您以前的帖子,您似乎使用了 Teradata。如果是这样,可能会有所帮助。XMLAGG

select id, 
  trim(trailing ',' from (xmlagg(purchase_history || ',' order by purchase_history) (varchar(500))))
from purchase
group by id;