Question

This question already has an answer here:

I'm trying to convert a single-columned subquery into a command-separated VARCHAR-typed list of values.

This is identical to this question, but for Oracle rather than SQL Server or MySQL.

Was it helpful?

Solution

There is an excellent summary of the available string aggregation techniques on Tim Hall's site.

OTHER TIPS

I found this that seems to work. Thoughts?

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 introduced LISTAGG, which unlike WM_CONCAT is documented. We are not on 11.2 yet, so we use a custom aggregate function.

Here's a blog that shows an Oracle query to work like MySQL's 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;

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top