目前我的目标是如果我有三行(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 之前缺少一个右括号。关于为什么会发生这种情况/达到我的目标的任何想法?
在 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;