Função LISTAGG
A função LISTAGG (list aggregate | lista agregada), é uma função SQL de grupo específica do Oracle, que agrupa os dados na mesma linha dentro de uma instrução SELECT, você pode utilizá-la sozinha para produzir conjuntos de dados agrupados por linhas simples, ou em conjunto com a função GROUP BY, abaixo alguns exemplos.
Imagine um SELECT comum na tabela EMPLOYEES.
Agora vamos montar um relatório que liste em uma única linha, o nome completo dos empregados no padrão americano (sobrenome, nome) separado por ‘; ’ juntamente com a data de contratação do empregado mais antigo. Neste caso ficaria assim.
LISTAGG + GROUP BY
Como falamos no inicio do artigo, também podemos utilizar a função LISTAGG juntamente com a função GROUP BY. Imagine que precisamos montar um relatório com o ID dos departamentos em uma coluna e na coluna seguinte o nome dos empregados separados por ‘;’.
LISTAGG + OVER
Ao utilizar a função LISTAGG juntamente com a função OVER, é possível criar relatórios analíticos com grupos e subgrupos de dados. Imagine o cenário onde você precise criar um relatório onde mostre o código do departamento, a data de contratação de todos os empregados que foram contratados antes de 01 de setembro de 2003, além disso, é preciso criar uma terceira coluna que mostre uma lista de todos os outros funcionários que também foram contratados antes de 01 de setembro de 2003 e pertencem ao mesmo departamento.
É isso aí, esta função eu particularmente não conhecia, mas alguns dias atrás lendo a Oracle Magazine, encontrei um artigo que falava desta função juntamente com outras e achei interessante dar uma estudada nesta função, fiz isso e tenho o enorme prazer em compartilhar aqui o que acabei aprendendo.
Forte Abraço e até a próxima!