FOR子句问题/合并成一列

时间:2019-04-23 23:36:57

标签: sql oracle

当前我的目标是,如果我有三行(a,b,z),(c,d,z),(e,f,z)。我将它们组合成一列,这样(a:b,c:d,e:f,z)。

我尝试了以下代码:


SELECT 
 d.engagement_id, 
(SELECT cf.field + ':' + cf.custom_field_value
     FROM LEFT OUTER JOIN custom_fields cf ON cf.engagement_id = d.engagement_id
     FOR XML PATH('')) [SECTORS]
FROM
    pseudo_table d

目前,它说我在FOR之前缺少右括号。有什么想法为什么会发生/达到我的目标?

1 个答案:

答案 0 :(得分:0)

在Oracle中,您将使用listagg()

SELECT d.engagement_id, 
       LISTAGG(cf.field || ':' || cf.custom_field_value, ', ') WITHIN GROUP (ORDER BY cf.field) as sectors
FROM pseudo_table d LEFT OUTER JOIN
     custom_fields cf
     ON cf.engagement_id = d.engagement_id
GROUP BY d.engagement_id;