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

时间:2009-01-29 17:19:43

标签: sql oracle subquery string-aggregation

我正在尝试将单列子查询转换为命令分隔的VARCHAR类型的值列表。

这与this question相同,但对于Oracle而不是SQL Server或MySQL。

5 个答案:

答案 0 :(得分:13)

Tim Hall的网站上有available string aggregation techniques的精彩摘要。

答案 1 :(得分:4)

我发现这似乎有效。想法?

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;

答案 2 :(得分:3)

11.2引入了LISTAGG,与WM_CONCAT不同。我们尚未使用11.2,因此我们使用自定义聚合函数。

答案 3 :(得分:2)

这是一个博客,显示了一个像MySQL的GROUP_CONCAT()

一样工作的Oracle查询

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

答案 4 :(得分:1)

SELECT deptno,wm_concat(ename)AS员工 来自emp GROUP BY deptno;

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