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

MS Access统计结果为0时无记录显示问题求助

问题分析与解决方案

原SQL的核心问题是:GROUP BY Date, Login, SLA只会返回表中实际存在的分组,如果某个(Date, Login, SLA)组合没有对应数据,这个分组根本不会出现在结果集里,Nz(Count(SLA))只是对已有分组的统计值做null处理,无法生成不存在的分组。

要解决这个问题,需要先构造出所有可能的(Date, Login, SLA)组合,再通过左连接原表来统计,确保每个组合都能返回结果(包括统计数为0的情况)。

解决SQL语句

SELECT 
    dims.Date,
    dims.Login,
    sla_vals.SLA,
    Nz(Count(t.SLA), 0) AS SLA_Count
FROM 
    (SELECT DISTINCT Date, Login FROM t_source_org_frt) AS dims,
    (SELECT 0 AS SLA UNION SELECT 1 AS SLA) AS sla_vals
LEFT JOIN 
    t_source_org_frt AS t 
ON 
    dims.Date = t.Date 
    AND dims.Login = t.Login 
    AND sla_vals.SLA = t.SLA
GROUP BY 
    dims.Date, dims.Login, sla_vals.SLA;

语句说明

  1. 构造维度组合:

    • (SELECT DISTINCT Date, Login FROM t_source_org_frt)获取表中所有唯一的日期和登录账号组合
    • (SELECT 0 AS SLA UNION SELECT 1 AS SLA)生成SLA的所有可能取值(0和1)
    • 两者交叉连接得到所有需要统计的(Date, Login, SLA)组合
  2. 左连接统计:

    • 左连接原表到维度组合表,确保每个组合都被保留
    • 用Count(t.SLA)统计匹配的记录数,没有匹配时会返回null
    • Nz(..., 0)将null转换为0,得到统计数为0的结果

内容的提问来源于stack exchange,提问作者Vclav Broek Polerok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:32:40