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

Access 2.0中使用Union Query统计人员A、B项总积分的需求

在Access 2.0中统计每位人员的A/B项总积分

要解决这个问题,核心思路是先把分散在两个列里的人员数据统一成相同结构,再分组求和。因为Access 2.0支持UNION查询,我们可以用这个特性来拆分并合并数据,最后汇总计算。

步骤1:用联合查询拆分原始数据

首先,假设你的原始表名叫MainTable,我们需要把表里的两部分人员信息拆分成统一的记录格式:

  • 把Title A和Credit A作为一组,B项积分设为0
  • 把Title B和Credit B作为另一组,A项积分设为0

用UNION ALL把这两部分合并,SQL语句如下:

SELECT [Title A] AS 姓名, [Credit A] AS A积分, 0 AS B积分
FROM MainTable
UNION ALL
SELECT [Title B] AS 姓名, 0 AS A积分, [Credit B] AS B积分
FROM MainTable;

这个查询会把每一行原始数据拆成两行,比如第一行James Sam 1 0会变成:

  • James, 1, 0
  • Sam, 0, 0

步骤2:基于拆分结果汇总积分

接下来,我们对上面的联合查询结果按姓名分组,求和A、B项的积分。你可以直接把联合查询嵌套在汇总查询里:

SELECT 姓名, Sum(A积分) AS 总A积分, Sum(B积分) AS 总B积分
FROM (
    SELECT [Title A] AS 姓名, [Credit A] AS A积分, 0 AS B积分
    FROM MainTable
    UNION ALL
    SELECT [Title B] AS 姓名, 0 AS A积分, [Credit B] AS B积分
    FROM MainTable
) AS SplitData
GROUP BY 姓名;

如果你觉得嵌套SQL看起来复杂,也可以先把第一步的联合查询保存为一个单独的查询(比如命名为qrySplitData),然后再写汇总查询:

SELECT 姓名, Sum(A积分) AS 总A积分, Sum(B积分) AS 总B积分
FROM qrySplitData
GROUP BY 姓名;

验证结果

拿你提供的测试数据来说,最终结果应该是这样的:

姓名总A积分总B积分
James31
Sam11
Jason22
Justin20
Sara11

这个结果完全符合每个人的积分统计需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:30:42