FOR 子句问题/将行合并为一列



目前我的目标是如果我有三行(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;

最新更新