Cet article explique comment ajouter le numéro de ligne à une requête SQL. Ceci est possible grâce à une fonction SQL nommé ROW_NUMBER(). Cette fonction génère simplement le numéro de la ligne de chaque ligne du résultat. Voici comment celle-ci fonctionne :
** Supposons que nous avons une table Employees.
SELECT EmployeeId, EmployeeNom, Salaire
FROM Employees
EmployeeId EmployeeNom Salaire
--------------------------------------------
1002 Alden 4000
2343 Lawson 4500
2004 Barbra 4800
1105 Marsden 4500
3116 Mac 5000
L'utilisation de ROW_NUMBER() va assigner le numéro de séquence pour chaque ligne.
SELECT ROW_NUMBER()
OVER (ORDER BY EmployeeName) AS Ligne,
EmployeeId, EmployeeName, Salaire
FROM Employees
Ligne EmployeeId EmployeeNom Salaire
--------------------------------------------------
1 1002 Alden 4000
2 2343 Lawson 4500
3 2004 Barbra 4800
4 1105 Marsden 4500
5 3116 Mac 5000
Utiliser ROW_NUMBER() pour calculer X ème plus haut salarié
Vous pouvez utilisé cette fonction afin de calculé le X ème plus haut salarié. Supposons que nous voulons sélectionner le 4 ème plus haut salarié, ceci donnerais la requête suivante :
SELECT * FROM
(SELECT ROW_NUMBER()
OVER (ORDER BY Salaire) AS Ligne,
EmployeeId, EmployeeNom, Salaire
FROM Employees) AS EMP
WHERE Ligne = 4
Ligne EmployeeId EmployeeNom Salaire
----------------------------------------------------
4 1105 Marsden 4500
Utiliser ROW_NUMBER() dans le cas d'une pagination
La fonction peut aussi être utilisé afin de récupéré certaines ligne d'une page en particulier. Ceci est courrant dans le développement d'application où beaucoup de ligne sont récupéré dans la base de données et que nous voulons les filtré par page.
SELECT * FROM{mos_fb_discuss:no_discuss}
(SELECT ROW_NUMBER()
OVER (ORDER BY EmployeeNom) AS Ligne,
EmployeeId, EmployeeNom, Salary
FROM Employees) AS EMP
WHERE Ligne BETWEEN 2 AND 4
Ligne EmployeeId EmployeeNom Salaire
----------------------------------------------------
2 2343 Lawson 4500
3 2004 Barbra 4800
4 1105 Marsden 4500
Marquer favoris
Bookmark
Email This
Hits: 438
Commentaires (0)

Ecrivez un commentaire





















