我对窗口函数没有太多经验,我必须使用一个来进行平均计算, 这是我的代码:
AVG(b.TotalSilkHrs) OVER(partition BY b.TECHNICIANCODE
ORDER BY b.rankID
ROWS BETWEEN CURRENT ROW and 3 FOLLOWING) AS MovingAvg
我计算子查询中计算的总和的平均值。 它给了我错误:
Msg 102,Level 15,State 1,Line 24 'ROWS'附近的语法不正确。
为什么我会收到错误?我使用了从您的网站获得的代码
答案 0 :(得分: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