【问题标题】:Select All Dates in a Range in MS Access在 MS Access 中选择范围内的所有日期
【发布时间】:2017-10-26 12:31:53
【问题描述】:

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

【问题讨论】:

    标签: sql ms-access ms-access-2013


    【解决方案1】:

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

    然后创建一个以表/查询为源的新查询,并在字段 Date 上与上面的查询进行左外连接。

    这将返回您现在的计数,而对于缺失的日期返回 Null。如果您想为 Null 设置零,请使用 Nz(CountField, 0)

    附录

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

    【讨论】:

    • 您不打算发布您著名的序列生成查询,该查询已修改为生成日期?可惜;)
    • @ErikvonAsmuth:哦,我暂时忘记了。链接已添加。感谢您的提醒。
    • @Gustav:谢谢你,我能够让它完全按照我的需要工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多