此代码:
select
AccountCode.AccountCodeID,
sum(AccountCode.AccountCodeID) Over (order by AccountCodeID) as RunningTotal
from
AccountCode
导致以下错误消息:
消息102,级别15,状态1,第2行
"order"附近的语法不正确。
在SQL Server 2012上。非常感谢您的建议。
语法似乎很好,因此应该适用于SQL Server 2012。
有两种可能性仍然无效:
-
您运行的是SQL Server 2012Management Studio,但针对的是较旧的SQL Server引擎版本-您可以通过运行来检查这一点
SELECT @@VERSION
-
您运行的数据库具有较低的兼容性级别,因此不支持SQL Server 2012功能,如
OVER (ORDER BY...)
窗口函数。通过对你的数据库运行这个来找出答案:
SELECT name, compatibility_level FROM sys.databases WHERE database_id = DB_ID()
SQL Server 2012的兼容级别应为110,如果低于此级别,则可能需要更改此级别。
更新:由于您已确定此数据库的兼容级别为80(=SQL Server 2000),因此需要将其更改为最新版本。要将数据库升级到应支持这些窗口功能的兼容级别105(SQL Server 2008 R2),请使用以下命令:
ALTER DATABASE (YourDatabaseName)
SET COMPATIBILITY_LEVEL = 105;
你就完了。现在您的查询应该可以正常工作了。