我有一个包含以下结构的表 [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 个月移动平均线。我发现了一些模糊不清的例子,但我尝试了它们无济于事。似乎通过 rep 组件添加 group 是与其他示例的主要区别。
据我所知,这大约是:
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
该查询似乎提取了总体平均值或总和,因为相关子查询中没有分组。当我尝试分组时,我收到一个错误,它最多只能返回一行。