SQL累积总错误服务器2012

SQL累积总错误服务器2012,sql,cumulative-sum,Sql,Cumulative Sum,我正在尝试使用无界进动之间的行。。。方法按照 我正在运行MS Server 2012 查询使用在CTE[tbl2]中创建的表: SELECT [RowID] , [GroupID] , [NumericalData] , Sum([NumericalData]) Over (Partition By [GroupID] order by [RowID] ROWS between UNBOU

我正在尝试使用无界进动之间的行。。。方法按照

我正在运行MS Server 2012

查询使用在CTE[tbl2]中创建的表:

SELECT   [RowID]
       , [GroupID]
       , [NumericalData]
       , Sum([NumericalData]) 
         Over (Partition By [GroupID] 
         order by [RowID] 
         ROWS between  UNBOUNDED PRECEDING and CURRENT ROW) as Cumulative

   FROM TBL2
   GROUP BY [ROWid]
    , [groupID]
    , [NumericalData]
  Order By ROW
我收到以下错误消息: 消息102,第15级,状态1,第103行 “行”附近的语法不正确

有人知道我做错了什么吗


提前感谢

SQL Server中的累积总和不需要该子句。此外:

  • 您正在将
    分组依据
    与窗口功能混合使用。虽然允许,但这可能不是你真正想要的
  • 您的
    订购人
    无效
也许这就是你想要的:

SELECT   [RowID], [GroupID], [NumericalData],
         Sum([NumericalData]) Over (Partition By [GroupID] order by [RowID]) as Cumulative
FROM TBL2
ORDER BY [RowID];
编辑:


我想指出的是,原始查询(使用
orderby
子句修复)在中确实有效。可能问题在于SQL Server的版本。

看起来除了最后一个group by/order by之外,它应该适合您。小组讨论真的有必要吗?是否有一个名为“行”的列?它看起来不像是在使用SQL Server 2012。
select@@version
告诉你什么?我得到了Microsoft SQL Server 2008 R2(SP2)-10.50.4000.0(X64)2012年6月28日08:36:30版权所有(c)Windows NT 6.1上的Microsoft Corporation Express Edition(64位)(Build 7601:Service Pack 1)我正在笔记本电脑上使用Management Studio 2012,但服务器在2008年运行。所以它不会起作用。谢谢您的建议。如果您省略了
子句,则使用默认值,即
范围
。如果
RowID
在每个
GroupID
中不是唯一的,您将得到不同的结果。除非您真的想要
范围产生的结果
,否则出于性能原因,您应该使用
。@MikaelEriksson。我怀疑这个查询并不是OP真正想要的。通过数值进行聚合,然后将其包含在累积和中,这不是一个常见的操作。同意最后的group by子句不是他想要的,可能也不是order by,至少不是这样。我只是想指出,“SQL Server中的累积和不需要该子句。”这并不完全正确。它会对结果产生影响,也会对性能产生影响。我有一个制造流程中的加工时间列表,我正在尝试创建一个累积值,以便我可以执行进一步的计算。我现在有一个内部连接工作,所以有我需要的结果。谢谢你的帮助。