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 に答える