为什么会对'Invalid Column Name'RowNumber 说WHERE.
SELECT Id, Name,
ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber'
FROM Folks
WHERE RowNumber=3
Run Code Online (Sandbox Code Playgroud)
虽然可以使用 ORDER BY
SELECT Id, Name
ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber'
FROM Folks
ORDER BY RowNumber DESC
Run Code Online (Sandbox Code Playgroud)
试试这个:
SELECT *
FROM (SELECT Id, Name,
ROW_NUMBER() OVER (ORDER BY Id) AS 'RowNumber'
FROM Folks
) AS A
WHERE RowNumber = 3
Run Code Online (Sandbox Code Playgroud)
你缺少一个逗号:
SELECT f.*
FROM (SELECT Id, Name,
---------------------^
ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
FROM Folks f
) f
WHERE RowNumber = 3;
Run Code Online (Sandbox Code Playgroud)
另外,您不能where在同一级别的子句中使用列别名。子查询或 CTE 解决了这个问题。
而且,最好不要对列别名使用单引号。您应该只对字符串和日期常量使用单引号。在这种情况下,rownumber根本不需要转义。