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

如何在Microsoft Access中统计单列不同值并按分组展示为对应列

在Microsoft Access中实现汽车数据的交叉表统计

嘿,这个需求其实就是做一个交叉表统计,Access自带的工具和SQL语句都能轻松搞定,我给你分两种方法一步步说明:


方法一:用Access交叉表查询向导(可视化操作,适合新手)

首先要注意:原始数据里Toyota和toyota是大小写不同的文本,Access会默认当成两个不同值,所以第一步得先统一格式,避免统计出错。

  1. 先创建一个清理数据的查询:

    • 切换到创建选项卡,点击查询设计
    • 添加你的原始汽车表(假设表名叫Cars)
    • 在字段行输入:class,下一行输入:StandardCar: UCase([car])(这一步把所有车型名称转成大写,统一Toyota和toyota为TOYOTA)
    • 保存这个查询,比如叫CleanedCarData
  2. 启动交叉表向导:

    • 切换到创建选项卡,点击查询向导
    • 在弹出窗口里选择交叉表查询向导,点击「确定」
    • 选择刚才创建的CleanedCarData查询,点击「下一步」
    • 把class字段选到行标题区域(这就是最终结果的行),点击「下一步」
    • 把StandardCar字段选到列标题区域(这就是最终结果的列:Hilux、Toyota),点击「下一步」
    • 把StandardCar字段选到值区域,然后在「函数」下拉框里选计数,点击「下一步」
    • 给查询起个名字(比如CarClassCrossTab),点击「完成」
  3. 把空值转成0:
    向导生成的查询里,没有数据的单元格会显示空白,如果你想改成0,右键查询选择「SQL视图」,把Count(StandardCar)改成Nz(Count(StandardCar), 0),保存后再运行就会显示0了。


方法二:直接写SQL语句(更灵活,适合熟悉SQL的用户)

直接写SQL可以一步完成数据清理、交叉表统计和空值转0,把下面的语句复制到Access的SQL视图里(替换Cars为你的原始表名):

TRANSFORM Nz(Count(StandardCar), 0) AS 车辆数量
SELECT class
FROM (
    -- 先统一车型名称的大小写
    SELECT class, UCase(car) AS StandardCar
    FROM Cars
) AS 清理后的数据
GROUP BY class
-- 指定列的顺序和固定值,确保只显示Hilux和Toyota
PIVOT StandardCar IN ('HILUX', 'TOYOTA');

语句解释:

  • 子查询清理后的数据负责把所有车型名称转成大写,避免大小写导致的统计错误
  • TRANSFORM是Access交叉表的核心关键字,用来指定值的计算方式
  • Nz(Count(...), 0)把原本空白的计数结果替换成0
  • PIVOT ... IN (...)固定了列的顺序和内容,不会因为新增车型打乱列的位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:57