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

在MS Access中使用Sum函数时如何避免查询返回重复行?

解决MS Access Sum查询返回重复行的问题

针对你遇到的Sum查询返回重复行的问题,提供几个可行的解决方法:

1. 检查并统一员工信息格式

出现重复行可能是因为StaffName存在隐性差异(比如前后空格、大小写不一致),导致分组时被识别为不同条目。可以先清理格式后再聚合:

SELECT StaffNo, UCase(Trim(StaffName)) AS CleanStaffName, Sum([Pay]) AS TotalPay
FROM tblHours
WHERE Restricted = 'Yes'
GROUP BY StaffNo, UCase(Trim(StaffName));

你也可以先查询确认是否存在这类差异:

SELECT StaffNo, StaffName, COUNT(*) AS RowCount
FROM tblHours
WHERE Restricted = 'Yes'
GROUP BY StaffNo, StaffName
HAVING COUNT(*) > 1;

2. 先去重再聚合

如果tblHours中存在完全重复的记录(同一员工的同一薪资条目重复),可以先提取唯一记录再求和:

SELECT StaffNo, StaffName, Sum([Pay]) AS TotalPay
FROM (
    SELECT DISTINCT StaffNo, StaffName, Pay
    FROM tblHours
    WHERE Restricted = 'Yes'
) AS DistinctHours
GROUP BY StaffNo, StaffName;

3. 关联规范化的员工表(若存在)

如果数据库中有单独的员工信息表(比如tblStaff,存储唯一的员工编号和姓名),建议从员工表关联工时表查询,避免工时表中员工信息的冗余导致的分组问题:

SELECT s.StaffNo, s.StaffName, Sum(h.Pay) AS TotalPay
FROM tblStaff s
INNER JOIN tblHours h ON s.StaffNo = h.StaffNo
WHERE h.Restricted = 'Yes'
GROUP BY s.StaffNo, s.StaffName;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:32:38