2016-07-05 78 views
-2

我正在为Oracle编写一个SQL语句,其中两个表之间存在一对多关系。表Person具有一个外部关键字,用于具有“采购说明”字段的采购表。一对多的Oracle SQL语句将多个记录(字段)追加到一个字符串

我需要编写,将采取所有的购买记录/行,并将它们追加到对方喜欢这样

人表

PersonID PersonName 
1    John 

采购表SELECT查询

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

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

输出= 1,B ook:包:衣服:晚餐

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

任何帮助表示赞赏。由于

+0

''wm_concat,或'LISTAGG()'(如果10g或更高版本) – xQbert

回答

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 
相关问题