Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Retornar resultados da consulta como uma lista separada por vírgulas no Oracle


No Oracle, podemos usar o LISTAGG() função para converter nossos resultados de consulta em uma lista separada por vírgulas.

Assim, em vez de cada valor ser gerado em uma linha separada, todos os valores são gerados em uma única linha, separados por uma vírgula (ou algum outro delimitador de nossa escolha).

Exemplo


Imagine que executamos a seguinte consulta:
SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Resultado:
   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Essa consulta retornou cinco linhas, cada uma com um valor diferente.

Se quisermos que esses valores sejam exibidos em uma única linha, podemos fazer o seguinte:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

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

Tudo o que fizemos foi passar o nome da coluna para o LISTAGG() função, bem como nosso delimitador escolhido.

Podemos usar um delimitador diferente ou podemos omitir esse argumento completamente para que todos os itens sejam concatenados.

A função também aceita um DISTINCT cláusula (para remover valores duplicados) e uma cláusula ORDER BY cláusula (para ordenar a saída da função).

A função também pode ser bastante útil ao agrupar resultados de consultas.

Veja LISTAGG() Function no Oracle para mais exemplos.