0

我对窗口函数没有太多经验,我必须使用一个来进行平均计算,这是我的代码:

    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”附近的语法不正确。

为什么我会出错?我使用了从您的网站获得的代码

4

1 回答 1

1

您的原始语法仅适用于 SQL Server 2012,适用于旧版本试试这个

;WITH AVGCTE AS
(
     SELECT *, 
     ROW_NUMBER() OVER(partition BY TECHNICIANCODE ORDER BY rankID) Rn 
     FROM TableA
)

SELECT A.*, B.AVG_COL
FROM AVGCTE A
CROSS APPLY 
(
   SELECT x.AVG(TotalSilkHrs) AVG_COL 
   FROM AVGCTE x WHERE x.Rn BETWEEN A.rn and a.rn + 2  
   AND  A.TECHNICIANCODE  = x.TECHNICIANCODE        
) B
于 2013-02-01T22:43:51.780 回答