'order' 附近的语法不正确。 运行 总计。 SQL 服务器 2012

Incorrect syntax near 'order'. Running Total. SQL Server 2012

此代码:

select 
    AccountCode.AccountCodeID,
    sum(AccountCode.AccountCodeID) Over (order by AccountCodeID) as RunningTotal
from 
    AccountCode

导致此错误消息:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'order'.

在 SQL Server 2012 上。感谢您的建议。

语法看起来不错 - 所以它应该适用于SQL Server 2012。

仍然无效有两种可能:

  • 您是 运行 SQL Server 2012 Management Studio,但针对较旧的 SQL Server engine 版本 - 你可以通过 运行:

    检查
    SELECT @@VERSION
    
  • 您是 运行 具有较低 兼容性级别 的数据库,因此不支持 SQL Server 2012功能,例如 OVER (ORDER BY...) window 函数。

    通过 运行 根据您的数据库查找:

    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),它应该支持那些 window 功能,请使用此命令:

ALTER DATABASE (YourDatabaseName)
SET COMPATIBILITY_LEVEL = 105;

大功告成。现在您的查询应该可以正常工作了。