quinta-feira, novembro 02, 2006

Oracle - Gerando Número Sequencial de Registros

Texto escrito por João Carlos S. Ribeiro

Pessoal,

Para quem não conhece, a função analítica do Oracle DENSE_RANK gera um número seqüencial para cada linha pertencente a um determinado grupo de linhas. Vejam o exemplo:

Suponhamos a tabela MUNICIPIO:

SGUF NOMMUN
AP Santana
AP Macapá
MG Belo Horizonte
MG Leopoldina
MG Cataguases
SP São Paulo
SP Campinas
SP Santos
SP Mogi-mirim
SP Jundiaí

Para gerar um seqüencial dos municípios, classificados alfabeticamente, DENTRO dos estados, podemos fazer:

SELECT sguf, DENSE_RANK () OVER (PARTITION BY sguf ORDER BY nommun) AS seq, nommun
FROM municipio
ORDER BY 1, 2;

Resultado:

sguf seq nommun
AP 1 Macapá
AP 2 Santana
MG 1 Belo Horizonte
MG 2 Cataguases
MG 3 Leopoldina
SP 1 Campinas
SP 2 Jundiaí
SP 3 Mogi-mirim
SP 4 Santos
SP 5 São Paulo

Mais detalhes podem ser obtidos na documentação do Oracle.

Nenhum comentário: