Retornando um subconjunto do conjunto de resultados utilizando ROW_NUMBER

Informática

01/09/2008

Por: Marcelo Yamazaki

Retornando um subconjunto do conjunto de resultados utilizando a função row_number.

A função ROW_NUMBER, disponível a partir do sql server 2005, retorna o número seqüencial de cada linha sobre um conjunto de resultados, podendo ser definido partições, onde a cada primeira linha de cada partição a seqüência inicia-se em 1.

Podemos utilizar a função onde se faz necessário retornar subconjuntos de um conjunto de resultados, como por exemplo, em consultas para páginas web que utilizam paginação.
 
Sintaxe:

ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )

<partition_by_clause>

    Divide o conjunto de resultados produzido pela cláusula FROM.

<order_by_clause>

    Determina a ordem na qual o valor de ROW_NUMBER é atribuído às linhas de uma partição.


Ex: Executando a consulta abaixo, utilizando o banco de dados Northwind:

select row_number() over (order by productid desc) as Numero, productname
from products

Teremos:



Retornando um subconjunto do conjunto de resultados.

Exemplo1:

with result as
(
select row_number() over (order by productid desc) as Numero, productname
from products
)
select *
from result
where numero between 20 and 30


Exemplo2:

select top 11 *
from
(
   select row_number() over (order by productid desc) as Numero, productname
   from products
) as result
where numero >= 20


Ambas as consultas retornam como resultado:




Referência:

http://msdn.microsoft.com/pt-br/library/ms186734.aspx

Esta apresentação reflete a opinião pessoal do autor sobre o tema, podendo não refletir a posição oficial do Portal Educação.


Colunista Portal - Educação

por Colunista Portal - Educação

O Portal Educação possui uma equipe focada no trabalho de curadoria de conteúdo. Artigos em diversas áreas do conhecimento são produzidos e disponibilizados para profissionais, acadêmicos e interessados em adquirir conhecimento qualificado. O departamento de Conteúdo e Comunicação leva ao leitor informações de alto nível, recebidas e publicadas de colunistas externos e internos.

Portal Educação

UOL CURSOS TECNOLOGIA EDUCACIONAL LTDA, com sede na cidade de São Paulo, SP, na Alameda Barão de Limeira, 425, 7º andar - Santa Cecília CEP 01202-001 CNPJ: 17.543.049/0001-93