You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access中统计指定日期区间两表重复项的两种计数方法

Access 指定日期区间内重复项统计方案

前提说明

  • 表一:[Unique Values](存储唯一值集合),字段:Number、Close Time、Max Date
  • 表二:存储含重复值的原始数据,字段:Number、Close Time
  • 统计逻辑基于指定日期区间,区分两种统计维度:
    1. 包含目标值的计数:统计表二中Number存在于表一的记录,在日期区间内的出现次数(含重复)
    2. 排除目标值的计数:统计表二中Number不存在于表一的记录,在日期区间内的出现次数(含重复)

1. 包含目标值的计数查询

按Number分组统计重复次数

使用内连接关联表一和表二,限定日期区间后分组统计:

SELECT 
    t2.Number,
    COUNT(t2.[Close Time]) AS 重复计数
FROM 
    [Unique Values] t1
INNER JOIN 
    表二 t2 ON t1.Number = t2.Number
WHERE 
    t2.[Close Time] BETWEEN #起始日期# AND #结束日期#
GROUP BY 
    t2.Number
ORDER BY 
    重复计数 DESC;

统计包含目标值的总记录数

若只需总计数而非按Number分组,可简化为:

SELECT COUNT(*) AS 包含目标值总计数
FROM 
    [Unique Values] t1
INNER JOIN 
    表二 t2 ON t1.Number = t2.Number
WHERE 
    t2.[Close Time] BETWEEN #起始日期# AND #结束日期#;

2. 排除目标值的计数查询

按Number分组统计重复次数

使用左连接筛选出表二中不在表一的Number记录,再统计日期区间内的次数:

SELECT 
    t2.Number,
    COUNT(t2.[Close Time]) AS 重复计数
FROM 
    表二 t2
LEFT JOIN 
    [Unique Values] t1 ON t2.Number = t1.Number
WHERE 
    t1.Number IS NULL
    AND t2.[Close Time] BETWEEN #起始日期# AND #结束日期#
GROUP BY 
    t2.Number
ORDER BY 
    重复计数 DESC;

统计排除目标值的总记录数

总计数简化版:

SELECT COUNT(*) AS 排除目标值总计数
FROM 
    表二 t2
LEFT JOIN 
    [Unique Values] t1 ON t2.Number = t1.Number
WHERE 
    t1.Number IS NULL
    AND t2.[Close Time] BETWEEN #起始日期# AND #结束日期#;

百万级数据性能优化建议

  • 给表二的Number和Close Time字段创建复合索引,加速关联和日期筛选
  • 避免在查询中用函数处理Close Time字段(如日期格式转换),直接用原始字段做区间判断
  • 若只需总计数,优先使用无分组的简化查询,减少计算开销

内容的提问来源于stack exchange,提问作者Saied Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:20:26