TSQL – Nom de colonne non valide RowNumber

Pourquoi dit-on 'Invalid Column Name' pour le RowNumber dans WHERE .

 SELECT Id, Name, ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber' FROM Folks WHERE RowNumber=3 

Alors que peut être utilisé avec ORDER BY

 SELECT Id, Name ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber' FROM Folks ORDER BY RowNumber DESC 

Essaye ça:

 SELECT * FROM (SELECT Id, Name, ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber' FROM Folks ) AS A WHERE RowNumber = 3 

Il vous manque une virgule:

 SELECT f.* FROM (SELECT Id, Name, ---------------------^ ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber FROM Folks f ) f WHERE RowNumber = 3; 

De plus, vous ne pouvez pas utiliser un alias de colonne dans une clause where au même niveau. Une sous-requête ou CTE résout ce problème.

Et, il est préférable de ne pas utiliser de guillemets simples pour les alias de colonne. Vous devez utiliser des guillemets simples uniquement pour les constantes de string et de date. Dans ce cas, rownumber n'a pas besoin d'être échappé du tout.