Resumo: neste tutorial, você aprenderá a usar o SQL Server ROW_NUMBER()
função para atribuir um inteiro sequencial a cada linha de um conjunto de resultados.
Introdução à função ROW_NUMBER () do SQL Server
A ROW_NUMBER()
é uma função de janela que atribui um inteiro sequencial a cada linha dentro da partição de um conjunto de resultados. O número da linha começa com 1 para a primeira linha em cada partição.
O seguinte mostra a sintaxe da função ROW_NUMBER()
:
Vamos examine a sintaxe da função ROW_NUMBER()
em detalhes.
PARTIÇÃO POR
O PARTITION BY
cláusula divide o conjunto de resultados em partições (outro termo para grupos de linhas). A função ROW_NUMBER()
é aplicada a cada partição separadamente e reinicializada o número da linha para cada partição.
A cláusula PARTITION BY
é opcional. Se você ignorá-lo, a função ROW_NUMBER()
tratará todo o conjunto de resultados como uma única partição.
ORDER BY
O ORDER BY
define a ordem lógica das linhas em cada partição do conjunto de resultados. A cláusula ORDER BY
é obrigatória porque a função ROW_NUMBER()
é sensível à ordem.
SQL Exemplos de servidor ROW_NUMBER ()
Usaremos a tabela sales.customers
do banco de dados de amostra para demonstrar a função ROW_NUMBER()
.
Usando o SQL Server ROW_NUMBER () função sobre um exemplo de conjunto de resultados
A instrução a seguir usa o ROW_NUMBER()
para atribuir a cada linha do cliente um número sequencial:
Aqui está o parcial saída:
Neste exemplo, nós pulou a PARTITION BY
cláusula, portanto, ROW_NUMBER()
tratou todo o conjunto de resultados como uma única partição.
Usando SQL Servidor ROW_NUMBER () sobre exemplo de partições
O exemplo a seguir usa o ROW_NUMBER()
função para atribuir um inteiro sequencial a cada cliente. Ele redefine o número quando a cidade muda:
A imagem a seguir mostra a saída parcial:
Neste exemplo, usamos a cláusula PARTITION BY
para dividir os clientes em partições por cidade. O número da linha foi reinicializado quando a cidade mudou.
Usando o SQL Server ROW_NUMBER () para paginação
A função ROW_NUMBER()
é útil para paginação em aplicações. Por exemplo, você pode exibir uma lista de clientes por página, em que cada página possui 10 linhas.
O exemplo a seguir usa ROW_NUMBER()
para retornar clientes da linha 11 a 20, que é a segunda página:
A saída é a seguinte:
Neste exemplo:
- Primeiro, o CTE usou a função
ROW_NUMBER()
para atribuir cada linha no conjunto de resultados é um inteiro sequencial. - Segundo, a consulta externa retornou as linhas da segunda página, que têm o número da linha entre 11 e 20.
Neste tutorial, você aprendeu como usar a função ROW_NUMBER()
do SQL Server para atribuir um inteiro sequencial a cada linha dentro de uma partição de uma consulta.