4

编辑:我需要在 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;
4

1 回答 1

1

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

由于您使用的是 Microsoft Access,因此无需这样做。将第一个查询另存为新查询。(对于不使用 MS Access 的人,将 SQL 语句另存为新查询相当于 SQL 语句CREATE VIEW ...。)然后按原样使用第二个查询,或者将其另存为另一个新查询。

MS Access非常擅长优化基于查询的查询(基于视图的视图)。

于 2012-12-22T13:47:12.380 回答