Oracle:将子查询中的多个结果合并为一个逗号分隔值
我试图将一个单一的圆柱子查询转换成一个命令分隔的VARCHAR
types的值列表。
这与这个问题是一样的,但对于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�