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.