sql >> Base de Datos >  >> RDS >> Oracle

Devolver los resultados de la consulta como una lista separada por comas en Oracle

En Oracle, podemos usar LISTAGG() función para convertir los resultados de nuestra consulta en una lista separada por comas.

Entonces, en lugar de que cada valor se emita en una fila separada, todos los valores se generan en una sola fila, separados por una coma (o algún otro delimitador de nuestra elección).

Ejemplo

Imagina que ejecutamos la siguiente consulta:

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Resultado:

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Esa consulta devolvió cinco filas, cada una con un valor diferente.

Si queremos que esos valores se muestren en una sola fila, podemos hacer lo siguiente:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Resultado:

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Todo lo que hicimos fue pasar el nombre de la columna a LISTAGG() función, así como nuestro delimitador elegido.

Podemos usar un delimitador diferente o podemos omitir ese argumento por completo para que todos los elementos estén concatenados.

La función también acepta un DISTINCT cláusula (para eliminar valores duplicados), y un ORDER BY cláusula (para ordenar la salida de la función).

La función también puede ser muy útil al agrupar los resultados de una consulta.

Ver LISTAGG() Función en Oracle para más ejemplos.