这段代码:
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 引擎 版本 - 您可以通过运行以下命令来检查:
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;
你就完成了。现在您的查询应该可以正常工作了。
关于syntax - 'order' 附近的语法不正确。运行总计。 SQL Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41831184/