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

MS Access 2016查询重复计数问题求助:统计唯一服务数量

解决MS Access中重复统计服务数量的问题

你的查询在LEFT JOIN后,单个服务对应多个Issue会生成重复记录,导致Count(Register.Service)把重复的服务也算入统计,所以出现服务数量虚高的情况。

最简单的修改方案

直接将统计服务数量的函数改为COUNT(DISTINCT),让它只计数每个提供商下的唯一服务:

SELECT 
    Register.Provider,
    COUNT(DISTINCT Register.Service) AS CountOfService,
    COUNT(Issues.ID) AS [No of Issues]
FROM Register 
LEFT JOIN Issues ON Register.Service = Issues.Service
GROUP BY Register.Provider
ORDER BY Register.Provider;

方案说明

  • COUNT(DISTINCT Register.Service):忽略JOIN后产生的重复服务记录,只统计每个提供商下不重复的服务数量,解决多Issue导致的计数错误。
  • COUNT(Issues.ID):正常统计所有关联的Issue总数,没有对应Issue的服务会返回Null,不会被计入统计。

备选方案(子查询方式)

如果因版本问题无法使用COUNT(DISTINCT),可以拆分统计逻辑为两个子查询,分别计算服务数和Issue数后再关联:

SELECT 
    reg.Provider,
    reg.CountOfService,
    NZ(iss.[No of Issues], 0) AS [No of Issues]
FROM 
    (SELECT Provider, COUNT(Service) AS CountOfService 
     FROM Register 
     GROUP BY Provider) AS reg
LEFT JOIN 
    (SELECT r.Provider, COUNT(i.ID) AS [No of Issues]
     FROM Register r
     LEFT JOIN Issues i ON r.Service = i.Service
     GROUP BY r.Provider) AS iss
ON reg.Provider = iss.Provider
ORDER BY reg.Provider;

这个方案中第一个子查询先单独统计每个提供商的服务数(天然去重),第二个子查询统计Issue总数,最后通过提供商关联结果,NZ函数确保无Issue的提供商显示0而非Null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:39:59