次の構造を含むテーブル [production] があります。
rep (char(10))
,cyc_date (datetime) ---- already standardized to mm/01/yyyy
,amt (decimal)
2011 年 1 月 1 日から 2013 年 8 月 1 日までの各担当者のデータがあります。私ができるようにしたいのは、次のように、各担当者に対して 2012 年 1 月 1 日から始まる 12 か月の移動平均を作成することです。
rep cyc_dt 12moAvg
-------------------------
A 1/1/2012 10000.01
A 2/1/2012 13510.05
. ........ ........
A 8/1/2013 22101.32
B 1/1/2012 98328.22
B ........ ........
ここで、各行は、指定された時点での担当者の 12 か月の移動平均を表します。漠然と似ている例をいくつか見つけて、それらを試してみましたが、役に立ちませんでした。group by rep コンポーネントの追加は、他の例との大きな違いのようです。
これは私が得た限りです:
SELECT
rep,
cyc_date,
(
SELECT Avg([amt])
FROM production Q
WHERE Q.[cyc_date] BETWEEN DateAdd("yyyy",-1,[cyc_date]+1) AND [cyc_date]
) AS 12moavg
FROM production
相関サブクエリにはグループ化がないため、そのクエリは全体の平均または合計を引き出しているようです。グループ化しようとすると、最大で 1 行しか返せないというエラーが表示されます。