Utilisation de la fonction ROW_NUMBER() dans la clause WHERE : surmonter les restrictions des fonctions fenêtrées
Les fonctions fenêtrées, telles que ROW_NUMBER(), permettent d'obtenir des données puissantes transformations au sein des ensembles de résultats. Cependant, leur utilisation est soumise à des contraintes spécifiques, dont l'une est leur exclusion de la clause WHERE.
Comme l'illustre la requête rencontrée par l'utilisateur, tenter d'utiliser ROW_NUMBER() dans la clause WHERE entraîne le message d'erreur : "Les fonctions fenêtrées ne peuvent apparaître que dans les clauses SELECT ou ORDER BY."
Pour remédier à cette limitation, une technique peut être utilisée qui consiste à encapsuler la requête d'origine dans une table commune Expression (CTE), permettant l'inclusion de fonctions fenêtrées au sein de la requête CTE.
Voici comment implémenter cette solution :
La requête révisée ressemblerait à ceci :
WITH MyCte AS ( SELECT employee_id, RowNum = ROW_NUMBER() OVER (ORDER BY employee_id) FROM V_EMPLOYEE ORDER BY Employee_ID ) SELECT employee_id FROM MyCte WHERE RowNum > 0
En encapsulant la requête d'origine dans un CTE, la fonction fenêtrée ROW_NUMBER() peut désormais être utilisée dans le WHERE clause, permettant le filtrage des résultats en fonction de ses valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!