访问查询以提取上个月的数据

Access query to pull previous month's data

我在 Access 2013 (Table1) 中有一个 table,其中包含以下列:

ID (pk)、报告日期、金额

最新数据是 30-50 天前的数据。例如,今天 (6/22/16) 最新数据将是 5/1/16 行,因为 6/1/16 数据要到 7 月中旬才会输入。 (ReportDate 列中的所有日期都是该月的第一天,即:4/1/16、5/1/16 等)

我需要编写一个查询来回溯 6 个月,但排除最近一个月的数据。

因此,例如,如果我今天 (6/22/16) 运行 查询,我只会获得与以下月份对应的行:

12/1/2015
 1/1/2016
 2/1/2016
 3/1/2016
 4/1/2016

应排除 2016 年 5 月 1 日的数据,因为它是最近一个月。

我可以通过将 ReportDate 的标准(在 QBE 中)设置为 >=DateAdd("m",-6,Date()) 来提取前 6 个月的数据,但我似乎无法弄清楚如何排除最近一个月的数据。

这应该会为您提供 table:

最近一个月的开始日期
SELECT Max(ReportDate) AS MaxOfReportDate
FROM Table1;

如果那是您要排除的月份,请将该查询用作您交叉连接回 table 的子查询。然后,您可以使用带有 BETWEEN 条件的 WHERE 子句,其终点由基于 MaxOfReportDate:

DateAdd() 表达式确定
SELECT t.ID, t.ReportDate, t.Amount
FROM
    Table1 AS t,
    (
        SELECT Max(ReportDate) AS MaxOfReportDate
        FROM Table1
    ) AS sub
WHERE
    t.ReportDate BETWEEN DateAdd('m', -6, sub.MaxOfReportDate)
                     AND DateAdd('m', -1, sub.MaxOfReportDate);