如何在SQL中匹配两列并汇总第三列的数值?
SQL实现跨列用户的Count值汇总
现有如下SQL数据表:
First_User Second_User Count User1 NULL 427 User3 NULL 69 User2 NULL 499 User1 User1 1 User4 User2 48 User5 User2 13
需要生成目标表,将First_User和Second_User中所有非空的用户作为独立行,汇总对应的Count值:
User Count User1 429 User2 560 User3 69 User4 48 User5 13
解决方案
可以通过UNION ALL将两列的用户记录拆分,再分组求和实现:
SELECT User, SUM(Count) AS Count FROM ( -- 提取First_User对应的Count记录 SELECT First_User AS User, Count FROM your_table WHERE First_User IS NOT NULL UNION ALL -- 提取Second_User对应的Count记录(仅当Second_User非空时) SELECT Second_User AS User, Count FROM your_table WHERE Second_User IS NOT NULL ) AS user_count_details GROUP BY User ORDER BY User;
逻辑说明
- 拆分记录:用
UNION ALL将原表拆分为两部分:- 第一部分保留所有
First_User非空的行,将First_User作为用户列; - 第二部分保留所有
Second_User非空的行,将Second_User作为用户列;
- 第一部分保留所有
- 分组求和:对拆分后的用户列分组,汇总每个用户对应的
Count总和; - 排序(可选):
ORDER BY User用于让结果和目标表顺序一致,可根据需求调整。
内容的提问来源于stack exchange,提问作者soosa
相关产品推荐
相关产品推荐

