Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 靠近'的语法不正确;订单';。运行总数。SQL Server 2012_Syntax_Sql Server 2012_Cumulative Sum - Fatal编程技术网

Syntax 靠近'的语法不正确;订单';。运行总数。SQL Server 2012

Syntax 靠近'的语法不正确;订单';。运行总数。SQL Server 2012,syntax,sql-server-2012,cumulative-sum,Syntax,Sql Server 2012,Cumulative Sum,此代码: select AccountCode.AccountCodeID, sum(AccountCode.AccountCodeID) Over (order by AccountCodeID) as RunningTotal from AccountCode 导致此错误消息的原因: 味精102,第15级,状态1,第2行 “order”附近的语法不正确 在SQL Server 2012上。非常感谢您的建议。语法似乎很好-因此它应该适用于SQL Server 20

此代码:

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;

你完成了。现在,您的查询应该可以正常工作。

手头没有2012实例,但确认如果
AccountCodeID
是我假设的
INT
列,那么它在SQL 2014(12.0.4213.0)上可以正常工作+1我运行了SELECT@@@VERSION并获得了Microsoft SQL Server 2008 R2(SP2)-10.50.4033.0(X64)2014年7月9日16:04:25版权所有(c)Windows NT 6.1上的Microsoft Corporation Enterprise Edition(64位)(Build 7601:Service Pack 1),但当我转到“关于”时,徽标是SQL Server 2012。第二个qry给出了兼容性级别80@DasalKalubowila:兼容性级别80是SQL Server 2000,它肯定不支持这些窗口功能!将SQL Server 2008的数据库兼容性级别更新为100,它应该可以工作框是关于Management Studio GUI工具的信息-这与实际的底层数据库引擎无关…@DasalKalubowila:将数据库的兼容性级别更改为更高的数字基本上只会解锁其他T-SQL功能-这意味着针对数据库执行的SQL代码可以使用更多的T-SQL功能比以前更好了。SQL Server通常会非常小心地删除以前存在的功能(这些功能可能不再适用于您的代码)。但这是一个数据库范围的变化,所以我肯定会首先在测试环境中进行,并彻底测试我的应用程序!