Oracle:将子查询中的多个结果合并为一个逗号分隔值

我试图将一个单一的圆柱子查询转换成一个命令分隔的VARCHARtypes的值列表。

这与这个问题是一样的,但对于Oracle而不是SQL Server或MySQL。

Tim Hall网站提供的string聚合技术有很好的总结。

我发现这似乎工作。 思考?

 SELECT SUBSTR (c, 2) concatenated FROM (SELECT SYS_CONNECT_BY_PATH ( myfield, ',') c, r FROM (SELECT ROWNUM ID, myfield, RANK () OVER (ORDER BY ROWID DESC) r FROM mytable ORDER BY myfield) START WITH ID = 1 CONNECT BY PRIOR ID = ID - 1) WHERE r = 1; 

11.2介绍了LISTAGG ,它与WM_CONCAT不同。 我们还没有在11.2上,所以我们使用一个自定义的聚合函数。

这里有一个博客显示Oracle查询的工作方式,如MySQL的GROUP_CONCAT()

http://halisway.blogspot.com/2006/08/oracle-groupconcat-updated-again.html

SELECT deptno,wm_concat(ename)AS employees FROM emp GROUP BY deptno;

参考: http : //forums.oracle.com/forums/thread.jspa?messageID=1186901&#1186901