sql分组查询后对数据进行合并?
有如下两张表:
1、区域表
CREATE TABLE `sys_area` (
`id` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL COMMENT '区域名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2、数量表
CREATE TABLE `sys_count` (
`id` int(11) NOT NULL,
`areaid` int(11) DEFAULT NULL COMMENT '区域id',
`count` int(11) DEFAULT NULL COMMENT '数量',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
根据区域统计数量表获取每个区的数量
SELECT area.`name`, sum(a.count) as count
FROM sys_count a
LEFT JOIN sys_area area ON a.areaid = area.id
GROUP BY areaid
获得结果如下:
count | name |
---|---|
28 | A区 |
18 | B区 |
19 | C区 |
26 | D区 |
问题:现在需要将A和B区的数据合并起来算作A区的数据
期望的是:
count | name |
---|---|
46 | A区+B区 |
19 | C区 |
26 | D区 |
SQL应该如何调整
回复
1个回答
test
2024-07-01
SELECT
CASE
WHEN `name` IN ('A区', 'B区') THEN 'A区+B区'
ELSE `name`
END AS `name`,
SUM(count) as count
FROM (
SELECT area.`name` as `name`, SUM(a.count) as count
FROM sys_count a
LEFT JOIN sys_area area ON a.areaid = area.id
GROUP BY area.`name`
) as subquery
GROUP BY `name`
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容