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

dvtswwa3  于 2023-06-22  发布在  Oracle
关注(0)|答案(4)|浏览(111)

此问题已在此处有答案

How can I combine multiple rows into a comma-delimited list in Oracle? [duplicate](11个回答)
8年前关闭。
我正在尝试将单列子查询转换为命令分隔的VARCHAR类型的值列表。
这与this question相同,但适用于Oracle而不是SQL Server或MySQL。

scyqe7ek

scyqe7ek1#

在Tim Hall的网站上有一个关于available string aggregation techniques的精彩摘要。

mwg9r5ms

mwg9r5ms2#

我发现这个好像能用。有什么想法?

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;
k4ymrczo

k4ymrczo3#

11.2引入了LISTAGG,与WM_CONCAT不同,它有文档记录。自定义聚合函数也可以做到这一点。

sxissh06

sxissh064#

SELECT deptno,wm_concat(name)AS employees FROM emp GROUP BY deptno;
参考:http://forums.oracle.com/forums/thread.jspa?messageID=1186901&#1186901

相关问题