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.

 

Espero ter ajudado, forte abraço e até a próxima!

Douglas Paiva de Sousa

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *