Select MS Access 范围内的所有日期

Select All Dates in a Range in MS Access

我在 MS Access 2013 数据库中有以下查询,它选择日期在过去 7 天内的所有记录的计数:

SELECT DateValue([Proofpoint Attachment Defense.Received]) AS [Date],
       Count([Proofpoint Attachment Defense.Received]) AS [count]
FROM [Proofpoint Attachment Defense]
WHERE ((([Proofpoint Attachment Defense.Received])>=DateAdd("d",-7,Date())))
GROUP BY DateValue([Proofpoint Attachment Defense.Received])

此查询产生以下结果:

Date        count
10/19/2017    3
10/20/2017    2
10/25/2017    3

我需要的结果必须包括所有 7 个日期,即使没有结果也是如此:

Date        count
10/19/2017    3
10/20/2017    2
10/21/2017    0
10/22/2017    0
10/23/2017    0
10/24/2017    0
10/25/2017    3

创建一个查询或 table 生成涵盖整个范围的日期并应用与现在相同的过滤器。

然后创建一个新查询,使用 table/query 作为源,并在字段 Date 上使用左外连接到上面的查询。

这将 return 您的计数为现在,缺失日期为 Null。如果您希望 Null 为零,请使用 Nz(CountField, 0)

附录:

可以找到生成一系列日期的查询here