我正在尝试将单列子查询转换为以命令分隔VARCHAR
的类型的值列表。
这与此问题相同,但适用于 Oracle 而不是 SQL Server 或 MySQL。
我正在尝试将单列子查询转换为以命令分隔VARCHAR
的类型的值列表。
这与此问题相同,但适用于 Oracle 而不是 SQL Server 或 MySQL。
在 Tim Hall 的网站上有一个很好的关于可用字符串聚合技术的总结。
我发现这似乎有效。想法?
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,所以我们使用自定义聚合函数。
SELECT deptno, wm_concat(ename) AS employees FROM emp GROUP BY deptno;
参考: http://forums.oracle.com/forums/thread.jspa?messageID=1186901& #1186901