Résumé: dans ce didacticiel, vous apprendrez à utiliser SQL Server ROW_NUMBER()
pour attribuer un entier séquentiel à chaque ligne dun jeu de résultats.
Introduction à la fonction SQL Server ROW_NUMBER ()
La ROW_NUMBER()
est une fonction de fenêtre qui affecte un entier séquentiel à chaque ligne dans la partition dun jeu de résultats. Le numéro de ligne commence par 1 pour la première ligne de chaque partition.
Ce qui suit montre la syntaxe de la fonction ROW_NUMBER()
:
Lets examinez la syntaxe de la fonction ROW_NUMBER()
en détail.
PARTITION PAR
Le PARTITION BY
La clause divise le jeu de résultats en partitions (un autre terme pour les groupes de lignes). La fonction ROW_NUMBER()
est appliquée à chaque partition séparément et réinitialise le numéro de ligne de chaque partition.
La clause PARTITION BY
est facultatif. Si vous lignorez, la fonction ROW_NUMBER()
traitera lensemble de résultats comme une seule partition.
ORDER BY
Le ORDER BY
définit lordre logique des lignes dans chaque partition du jeu de résultats. La clause ORDER BY
est obligatoire car la fonction ROW_NUMBER()
est sensible à lordre.
SQL Exemples de serveur ROW_NUMBER ()
Nous utiliserons la table sales.customers
de la base de données exemple pour illustrer la fonction ROW_NUMBER()
.
Utilisation de SQL Server ROW_NUMBER () sur un exemple densemble de résultats
Linstruction suivante utilise ROW_NUMBER()
pour attribuer à chaque ligne client un numéro séquentiel:
Voici le partiel sortie:
Dans cet exemple, nous ignoré la clause PARTITION BY
, par conséquent, la ROW_NUMBER()
a traité lensemble de résultats comme une seule partition.
Utilisation de SQL Exemple de serveur ROW_NUMBER () sur les partitions
Lexemple suivant utilise ROW_NUMBER()
pour attribuer un entier séquentiel à chaque client. Il réinitialise le numéro lorsque la ville change:
Limage suivante montre la sortie partielle:
Dans cet exemple, nous avons utilisé la clause PARTITION BY
pour diviser les clients en partitions par ville. Le numéro de ligne a été réinitialisé lorsque la ville a changé.
Utilisation de SQL Server ROW_NUMBER () pour la pagination
La fonction ROW_NUMBER()
est utile pour la pagination dans les applications. Par exemple, vous pouvez afficher une liste de clients par page, chaque page comportant 10 lignes.
Lexemple suivant utilise ROW_NUMBER()
pour renvoyer les clients de la ligne 11 à 20, qui est la deuxième page:
Le résultat est le suivant:
Dans cet exemple:
- Premièrement, le CTE a utilisé la fonction
ROW_NUMBER()
pour attribuer chaque ligne du résultat définit un entier séquentiel. - Deuxièmement, la requête externe a renvoyé les lignes de la deuxième page, dont le numéro de ligne est compris entre 11 et 20.
Dans ce didacticiel, vous avez appris à utiliser la fonction SQL Server ROW_NUMBER()
pour attribuer un entier séquentiel à chaque ligne dune partition dune requête.