SQL 2005 – ROW_NUMBER()

 

Existem algumas coisas que não sabemos da existência, outras até conhecemos mas não temos idéia do dia que precisaremos delas. 

Há uns quatro anos eu precisava realizar uma consulta e retornar uma coluna com um seqüencial, numerando as linhas, algo bem simples assim:

 

cod_produto    des_produto                    sequencial

————– —————————— ————-

516E           Arroz                              1

03G            Azeitona                           2

98K            Salame                             3

514A           Tomate                             4

 

Como retornar um sequencial num comando Select simples? Eu não queria usar cursor, nem uma tabela auxiliar, nada disso, queria apenas um seqüencial, simples e objetivo. Enfim, procurei diversos meios e até hoje não soube uma forma simples de fazer isso no SQL Server 2000.

Com o SQL Server 2005 aquele bordão “Seus problemas acabaram” cabe perfeitamente nesse cenário. Existe uma função Row_Number() que  faz exatamente isso. Veja um exemplo:

 

SELECT

      cod_produto,

      des_produto,

      ROW_NUMBER() over (order by des_produto) sequencial

FROM

      tb_teste_produto

 

Como fica subtendido a consulta SQL irá retornar os campos da tabela mais um campo  seqüencial baseado na ordenação do nome do produto.

 

Simples não é?

 

Trabalhando com subconsultas é possível por exemplo atualizar todos os registros entre as linhas 60 e 80 de uma consulta…

 

é o T-SQL dando asas a nossa criatividade!

 

 

Se você tem outra solução para este cenário contribua deixando seu comentário🙂

 

 

1 comment so far

  1. salvadorscardua on

    Esta é uma das 4 funções novas de Rankeamento que vieram com o SQL Server 2005. Lembro quando trabalhava com programação no Postgres em 2006 e tive esta mesma necessidade, não encontrei nada que me ajudasse com isso também na época.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: