MS Access中统计员工去重后完成单元数的查询报错问题
解决MS Access中去重统计员工完成单元数的语法错误
错误原因
MS Access的Jet SQL语法不支持COUNT(DISTINCT 字段)这种写法,这是引发语法错误的核心原因。
方法一:子查询去重后统计
先通过子查询提取每个员工对应的唯一SerialNumber记录,再在外层统计每个员工的唯一记录数量:
SELECT Operator, COUNT(*) AS QTY FROM ( SELECT DISTINCT Operator, SerialNumber FROM Database WHERE ACTION = "PLACE" ) AS DistinctUnits GROUP BY Operator;
方法二:嵌套GROUP BY统计
先按员工和SerialNumber分组得到唯一的员工-单元组合,再对分组结果统计数量:
SELECT Operator, COUNT(*) AS QTY FROM ( SELECT Operator, SerialNumber FROM Database WHERE ACTION = "PLACE" GROUP BY Operator, SerialNumber ) AS GroupedUnits GROUP BY Operator;
注意事项
- 确认原表字段名:你的描述中表字段是
Employee,但查询里用了Operator,需保证二者一致,避免字段不存在的错误。 - 两种方法本质都是先获取去重后的员工-单元对应关系,再统计数量,均可实现你需要的“每个员工去重后的完成单元数”需求。
内容的提问来源于stack exchange,提问作者Twist
相关产品推荐
相关产品推荐

