Si queremos obtener una lista de valores separados por comas, cuyos valores representen el contenido de una columna de varias filas, en Oracle 10g, podemos usar la función PL/SQL WMSYS.WM_CONCAT.
Veamos un ejemplo más ilustrativo:
select WMSYS.WM_CONCAT(ename) as "Lista de nombres" from scott.emp;
Nos daría como resultado:
Una sola fila con la lista de los nombres de empleados separados por comas.
Podemos también mostrar los resultados agrupados por otro campo, por ejemplo el número de departamento:
select deptno as "Departamento", WMSYS.WM_CONCAT(ename) as "Lista de nombres" from scott.emp group by deptno;
Por cada grupo, en esta caso número de departamento, crea una lista de los empleados pertenecientes a cada uno.
Hay que comentar que Oracle no recomienda el uso de esta función porque no está soportada por ellos. De hecho en la versión 12g está fución ha sido eliminada. A partir de la versión 11g fue reemplazada por LISTAGG la cual veremos en otra entrada.
Es posible también lograr el listado de nombres por departamento en Oracle 10g sin utilizar la función WMSYS.WM_CONCAT. Utilizando las sentencias analíticas de Oracle que se muestran aquí.
¡Hasta la próxima!