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

如何在Access报表中按表单日期参数获取唯一部门与课程列表?

Access报表:指定日期范围的唯一部门&课程查询方案

方法一:用DISTINCT筛选唯一组合

直接修改原查询,只在SELECT里保留需要去重的Department和Course,DoneDate只留在WHERE子句里做日期范围过滤,这样DISTINCT就会基于部门+课程的组合去重,不会被日期干扰。SQL语句如下:

SELECT DISTINCT Department, Course
FROM TrainingsDone INNER JOIN Trainings ON TrainingsDone.TrgMastID = Trainings.TrgMastID
WHERE TrainingsDone.DoneDate Between [Forms]![frmReports_Menu]![txtStartDate] And [Forms]![frmReports_Menu]![txtEndDate];

方法二:用GROUP BY分组实现去重

如果后续需要扩展统计(比如该部门课程在范围内的培训次数),用GROUP BY更灵活,同样只保留部门和课程作为分组字段,日期条件不变:

SELECT Department, Course
FROM TrainingsDone INNER JOIN Trainings ON TrainingsDone.TrgMastID = Trainings.TrgMastID
WHERE TrainingsDone.DoneDate Between [Forms]![frmReports_Menu]![txtStartDate] And [Forms]![frmReports_Menu]![txtEndDate]
GROUP BY Department, Course;

绑定报表的操作

把上面任意一个查询设为报表的记录源,然后在报表里添加对应Department和Course的控件即可,这样报表里只会显示日期范围内唯一的部门-课程组合,不会出现重复项。

原查询失效原因

你之前的查询因为把DoneDate加入了SELECT列表,DISTINCT会把“部门+课程+日期”作为整体去重,只要日期不同,哪怕部门课程一样也会生成多条记录。把DoneDate移出SELECT,只用来过滤数据,就能保证部门和课程的唯一性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:53:17