如何在单个查询中将直接SQL中的双移动平均值合并?

时间:2012-11-20 11:58:36

标签: sql ms-access

编辑:我需要在ACCESS中执行此操作。

我是一名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;

1 个答案:

答案 0 :(得分:1)

  

我的问题:有没有办法计算双倍移动平均线   单一查询?

由于您使用的是Microsoft Access,因此不需要这样做。将第一个查询保存为新查询。 (对于不使用MS Access的人,将SQL语句保存为新查询等同于SQL语句CREATE VIEW ...。)然后按原样使用第二个查询,或将其另存为 another < / em>新查询。

MS Access 非常善于优化基于查询构建的查询(基于视图构建的视图)。