'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;
大功告成。现在您的查询应该可以正常工作了。
此代码:
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;
大功告成。现在您的查询应该可以正常工作了。