用于一对多的Oracle SQL语句将多个记录(字段)附加到一个字符串

时间:2016-07-05 15:46:42

标签: sql oracle select

我正在为Oracle编写SQL语句,其中两个表之间存在一对多的关系。表Person具有表Purchase的外键,其具有Purchase Description字段。

我需要编写一个SELECT查询,它将获取所有购买记录/行并将它们相互追加

人员表

PersonID  PersonName
1               John

购买表

PurchaseId (PK), PersonID(FK), PurchaseDescription
1                           1                     Book
2                           1                     Clothes
3                           1                     Bag
4                           1                     Dinner

因此查询的输出将如下所示

输出= 1,书:袋子:衣服:晚餐

输出将是一对多关系中的一行,其中有书,包,衣服和晚餐的单独记录。

感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

这样做使用一个名为LISTAGG的函数,就像这个

一样
SELECT 'Output = '||CAST(P.PersonID AS VARCHAR(100)), LISTAGG(Pur.PurchaseDescription, ':')
FROM Person P
LEFT JOIN Purchase Pur ON P.PersonID = Pur.PersonID
GROUP BY P.PersonID