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
我在 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