当前我的目标是,如果我有三行(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之前缺少右括号。有什么想法为什么会发生/达到我的目标?
答案 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;