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

如何在MS Access中筛选按ID和DATE分组后记录数>2的数据

解决MS Access查询需求的正确写法

要实现筛选Absen表中按ID和[DATE]分组后记录数大于2的所有原始数据,并关联MASTERID表获取NAMEID,可以通过子查询先筛选符合条件的分组组合,再关联原表和MASTERID表来实现,具体SQL如下:

SELECT a.ID, a.[DATE], a.其他字段, m.NAMEID
FROM Absen a
INNER JOIN MASTERID m ON a.ID = m.ID
INNER JOIN (
    -- 子查询:找出ID+DATE分组后记录数>2的组合
    SELECT ID, [DATE]
    FROM Absen
    GROUP BY ID, [DATE]
    HAVING COUNT(*) > 2
) AS filtered ON a.ID = filtered.ID AND a.[DATE] = filtered.[DATE]
ORDER BY a.ID, a.[DATE];

代码说明:

  1. 子查询部分:先对Absen表按ID和[DATE]分组,用HAVING COUNT(*) > 2筛选出记录数超过2的分组组合,得到符合条件的ID和[DATE]集合。
  2. 关联原表:将子查询的结果和原Absen表关联,筛选出所有属于这些分组的原始记录(而非仅显示分组后的汇总行)。
  3. 关联MASTERID表:通过ID字段关联MASTERID表,获取对应的NAMEID字段。
  4. 注意:DATE是Access的关键字,必须用方括号[DATE]包裹字段名避免语法错误;请将a.其他字段替换为你需要从Absen表获取的实际字段。

如果你的现有查询是直接在主查询中分组并筛选,会导致仅返回每组的一条汇总记录,无法得到所有原始数据,这就是你得不到预期结果的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:42:33