为什么在SQL Server 2008中无法识别ROW_NUMBER()?

Gol*_*old 8 t-sql sql-server sql-server-2008

为什么ROW_NUMBER()在SQL Server 2008中不被识别为函数名?

我试试这个

SELECT 
    ROW_NUMBER() AS Row, Lname
FROM MEN
GO
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

消息195,级别15,状态10,行1'ROW_NUMBER'不是可识别的函数名称.

Joh*_*som 27

您似乎使用了错误的语法.以下是使用AdventureWorks数据库的示例.

select 
    row_number() over(order by Name),   
    Name
from HumanResources.Department
Run Code Online (Sandbox Code Playgroud)

  • 错误将是"在'ROW_NUMBER'附近的语法错误,预期'OVER'",只是在SQL 2005上测试过. (2认同)

gbn*_*gbn 10

扩展其他2个答案......

我在SQL 2005上用2个数据库尝试了完全相同的命令.

对于兼容级别80和90,错误是:

Msg 1035, Level 15, State 10, Line 2
Incorrect syntax near 'ROW_NUMBER', expected 'OVER'.
Run Code Online (Sandbox Code Playgroud)

我只能在SQL 2000框上生成此错误:

Msg 195, Level 15, State 10, Line 2
'ROW_NUMBER' is not a recognized function name.
Run Code Online (Sandbox Code Playgroud)

怎么SELECT @@version说?我百分百肯定你的版本是你期望的......

我的另一个想法是compat level 65,它无法在SQL Server 2005及其上面显式设置.而且我没有任何遗留数据库可供测试.