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

Oracle GROUP_CONCAT() Equivalente


Alguns RDBMSs têm um GROUP_CONCAT() função que permite retornar uma coluna de consulta como uma lista delimitada (por exemplo, uma lista separada por vírgulas). MySQL e MariaDB são dois que possuem essa função.

PostgreSQL e SQL Server têm funções semelhantes chamadas STRING_AGG() .

Oracle, por outro lado, tem o LISTAGG() função que faz praticamente a mesma coisa (e talvez mais).

Então você poderia dizer que LISTAGG() é o GROUP_CONCAT() da Oracle equivalente.

Exemplo


Aqui está um exemplo básico para demonstrar como o LISTAGG() da Oracle função funciona:
SELECT LISTAGG(region_name, ',') 
FROM regions;

Resultado:
                      LISTAGG(REGION_NAME,',') 
______________________________________________ 
Europe,Americas,Asia,Middle East and Africa   

Nesse caso, especifiquei que o separador é uma vírgula.

Aqui está o que acontece quando fazemos a consulta sem o LISTAGG() função:
SELECT region_name 
FROM regions;

Resultado:
              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Recebemos quatro linhas, cada uma com um valor separado, em vez de uma linha separada por vírgulas que contém todos os valores.

O LISTAGG() também nos permite ordenar os resultados, retornar apenas valores únicos (através do DISTINCT cláusula) e muito mais.

Veja LISTAGG() Function no Oracle para mais exemplos.