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.