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

MSSQL多表同列求和查询求助:按user_id汇总两表fees

MSSQL 两表按user_id汇总fees总和的查询方案

嘿,针对你要把表A和表B中对应user_id的fees汇总求和的需求,我整理了两种实用的MSSQL查询写法,你可以根据实际场景来选择:

方法一:合并数据后分组汇总(最直观高效)

这种方式先通过UNION ALL把两张表的user_id和fees数据合并(这里用UNION ALL而非UNION,因为不需要去重,执行效率更高),再按user_id分组求和,完全匹配你给出的示例需求:

SELECT 
    user_id,
    SUM(fees) AS fees
FROM (
    -- 合并表A和表B的目标列数据
    SELECT user_id, fees FROM 表A
    UNION ALL
    SELECT user_id, fees FROM 表B
) AS combined_data
GROUP BY user_id
ORDER BY user_id;

执行这段语句后,就能得到你期望的结果:

user_id fees
1 50
2 21

方法二:全连接处理单表存在的用户

如果存在某个user_id只在表A或只在表B中的情况,用全连接(FULL JOIN)可以确保不会遗漏任何用户的数据,然后分别对两张表的fees求和后相加:

SELECT 
    -- 取非空的user_id,确保每个用户都有唯一标识
    COALESCE(a.user_id, b.user_id) AS user_id,
    -- 对空值用0替代,避免求和时出现NULL
    ISNULL(SUM(a.fees), 0) + ISNULL(SUM(b.fees), 0) AS fees
FROM 表A a
FULL JOIN 表B b ON a.user_id = b.user_id
GROUP BY COALESCE(a.user_id, b.user_id)
ORDER BY user_id;

两种方法的适用场景

  • 方法一:适合两张表的user_id大部分重叠,或者你能确定所有user_id在两张表中都存在的场景,写法简洁高效。
  • 方法二:适合存在user_id仅出现在其中一张表的场景,能保证所有用户的fees都被正确统计。

内容的提问来源于stack exchange,提问作者Divya Rose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:10:30