SQL行转列实现:按Key分组统计Value为A、B的数量
按Key分组统计A/B出现次数的SQL查询方案
针对你的需求,这里提供通用的SQL实现方案,可直接实现按Key分组,分别统计'A'和'B'的出现次数,无对应值时显示0:
核心SQL语句
SELECT `Key`, SUM(CASE WHEN Value = 'A' THEN 1 ELSE 0 END) AS `A的计数`, SUM(CASE WHEN Value = 'B' THEN 1 ELSE 0 END) AS `B的计数` FROM 你的表名 -- 替换为实际表名 GROUP BY `Key` ORDER BY `Key`;
逻辑说明
- 通过
CASE WHEN对每条记录的Value做判断:匹配目标值时返回1,否则返回0,再用SUM函数分组求和,得到对应值的总出现次数; GROUP BY Key确保每个Key仅返回一条汇总记录,ORDER BY Key让结果按Key排序,与示例输出一致。
代入你提供的测试数据执行后,将得到如下结果:
| Key | A的计数 | B的计数 |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 0 |
| 3 | 0 | 1 |
内容的提问来源于stack exchange,提问作者Michele Allara
相关产品推荐
相关产品推荐

