Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de la colonne dérivée de la fonction de classement dans la clause where (SQL Server 2008)

Vous devez déplacer l'opérateur WHERE au-dessus la liste de projets où la colonne RowNumber est créée. Utilisez une table dérivée ou un CTE :

SELECT * 
  FROM (
   SELECT *, ROW_NUMBER() OVER (...) as RowNumber
   FROM ...) As ...
 WHERE RowNumber = ...

le CTE équivalent est :

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (...) as RowNumber
       FROM ...)
SELECT * FROM cte 
WHERE RowNumber = ...