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.
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
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.
Grande Crespi, eu sabia que você resolveria meu problema.
Obrigadão