我是一名SQL处女,非常感谢任何神奇的帮助!
对于简单的12个月预测,我使用的是 12个月双倍移动平均值。 我已设法通过查询1(下面)拉出单一移动平均线。 根据查询1创建的表,我编写了另一个查询(查询2)来获取双重移动平均线。
因此,我当前的流程需要两个查询。到目前为止,我将这两个步骤合并为一个查询的努力并没有成功。
我的问题:有没有办法在单个查询中计算双重移动平均线?
QUERY 1 - 单个移动平均线:
SELECT A.*, IIf([A].[VOL]>0,
(SELECT AVG(B.[VOL])
FROM [Turnover] as B
WHERE (B.Code = A.Code) AND (B.YM Between A.YM - 1 AND A.YM - ([12] * 31))),
(SELECT AVG(B.[VOL])
FROM [Turnover] as B
WHERE (B.Code = A.Code) AND (B.YM Between Now() - 31 AND A.YM - ([12] * 31)))) AS [Mvg Avg 1],
INTO [Model 12m]
FROM [Turnover] AS A;
QUERY 2 - 双倍移动平均线(目前这指的是QUERY 1):
SELECT A.*, IIf([A].[Mvg Avg 1]>0,(SELECT AVG(B.[Mvg Avg 1])
FROM [Model 12m] as B
WHERE (B.Code = A.Code) AND (B.YM Between A.YM - 1 AND A.YM - ([12] * 31))),(SELECT AVG(B.[Mvg Avg 1])
FROM [Model 12m] as B
WHERE (B.Code = A.Code) AND (B.YM Between Now() - 31 AND A.YM - ([12] * 31)))) AS [2 Mvg Avg],
INTO [Model 12m - 2MA]
FROM [Model 12m] AS A;
答案 0 :(得分:1)
我的问题:有没有办法计算双倍移动平均线 单一查询?
由于您使用的是Microsoft Access,因此不需要这样做。将第一个查询保存为新查询。 (对于不使用MS Access的人,将SQL语句保存为新查询等同于SQL语句CREATE VIEW ...
。)然后按原样使用第二个查询,或将其另存为 another < / em>新查询。
MS Access 非常善于优化基于查询构建的查询(基于视图构建的视图)。