56,677
社区成员
发帖
与我相关
我的任务
分享
select * from A union all select null, null, sum(if(s_id='a2',0,ct_1)), sum(ct_2) from A
drop temporary table if exists A;
create temporary table A(t_id varchar(10), s_id varchar(10), ct_1 int, ct_2 int);
insert A values
('a', 'a1', 1000, 800),
('a', 'a2', 100, 100),
('a', 'a3', 50, 50);
select t_id, s_id, sum(if(s_id='a2',0,ct_1)), sum(ct_2)
from a group by t_id, s_id with rollup
没发现问题
+------+------+---------------------------+-----------+
| t_id | s_id | sum(if(s_id='a2',0,ct_1)) | sum(ct_2) |
+------+------+---------------------------+-----------+
| a | a1 | 1000 | 800 |
| a | a2 | 0 | 100 |
| a | a3 | 50 | 50 |
| a | NULL | 1050 | 950 |
| NULL | NULL | 1050 | 950 |
+------+------+---------------------------+-----------+
5 rows in set (0.00 sec)