Row_Number()

Voltando de férias, eu respondi diversas duvidas de t-SQL e duas dessas foram resolvidas com row_number, então esse post é para explicar o Row_number.

O Row_Number cria um seqüencial ao lado de cada coluna, esse valor é virtual, ou seja, não esta gravado na tabela.

Vejamos um exemplo simples, um select na tabela HumanResources.Departament do banco de dados AdventureWorks.

select DepartmentID, Name, GroupName, ModifiedDate
   
from HumanResources.
Department
   
order by name

O resultado do select será conforme a imagem abaixo.

Resultado 01

Nesta query colocamos a clausula order by pela coluna Name, se precisássemos uma coluna de números ordenados poderíamos utilizar o Row_Number() e teríamos essa coluna a mais ordenada além de manter a ordenação. Veja abaixo:

select row_number()over(order by name) as Ordem ,  
       DepartmentID, Name, GroupName, ModifiedDate 
       from HumanResources.Department

Resultado 02 

E era isso, ano passado eu publiquei um post que resolvia esse mesmo problema porém no SQL Server 2000, onde não temos essa função, veja esse post no link: http://www.blog.crespidb.com.br/blogcrespi/post/2009/11/23/Contando-Linhas.aspx

Abraço, Rodrigo.

Author: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

One thought on “Row_Number()

Deixe uma resposta