Oracle: combine múltiples resultados en una subconsulta en un solo valor separado por comas [duplicado]
-
20-08-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de convertir una subconsulta de una sola columna en una lista de valores VARCHAR
separados por comandos.
Esto es idéntico a this pregunta , pero para Oracle en lugar de SQL Server o MySQL.
Solución
Hay un excelente resumen de las técnicas de agregación de cadenas disponibles en El sitio de Tim Hall.
Otros consejos
Encontré esto que parece funcionar. Pensamientos?
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 presenta LISTAGG , que a diferencia de WM_CONCAT está documentado. Todavía no estamos en 11.2, por lo que utilizamos una función de agregado personalizada.
Aquí hay un blog que muestra una consulta de Oracle para funcionar como GROUP_CONCAT()
:
http://halisway.blogspot.com/2006 /08/oracle-groupconcat-updated-again.html
SELECT deptno, wm_concat (ename) AS empleados DE emp GROUP BY deptno;
Referencia: http://forums.oracle. com / forums / thread.jspa? messageID = 1186901 & amp; # 1186901