【发布时间】:2013-02-01 22:27:09
【问题描述】:
我对窗口函数没有太多经验,我必须使用一个来进行平均计算, 这是我的代码:
AVG(b.TotalSilkHrs) OVER(partition BY b.TECHNICIANCODE
ORDER BY b.rankID
ROWS BETWEEN CURRENT ROW and 3 FOLLOWING) AS MovingAvg
我计算在子查询中计算的总和的平均值。 它给了我错误:
消息 102,级别 15,状态 1,第 24 行 “ROWS”附近的语法不正确。
为什么我会出错?我使用了从您的网站获得的代码
【问题讨论】:
-
我认为 SQL Server 不支持这种类型的分区定义。如果有的话,您将需要 SQL Server 2012,在此之前,Window 函数的实现非常有限。
-
您使用的是哪个版本的
SQL Server? -
SQL Server 2012 支持 OVER() 子句。
-
2008 R2。我还能如何计算受子查询周期限制的平均值?
-
@MikaelEriksson:在 SQL Server 2005 中引入了窗口函数,但不支持通过在窗口定义中包含
order by来运行聚合。这是在 SQL Server 2012 中引入的,但我仍然不确定 2012 年是否支持rows between ...选项
标签: sql sql-server sql-server-2008-r2 average partitioning