mysql sql汇总查询将两个结果集合并一行展示

最近在做一个统计功能,其中有根据一张表中的一个字段的不同状态统计,输出时将同一笔业务的多个数据集合成一条数据进行展示。

数据库是MYSQL,直接上代码,实例如下:

建表语句:

CREATE TABLE `TB_TABLE` (
  `ID` char(32) NOT NULL COMMENT '主键',
  `BIZ_NUM` varchar(30) DEFAULT NULL COMMENT '业务编号',
  `BIZ_AMT` int(11) DEFAULT NULL COMMENT '金额',
  `TYPE` char(11) DEFAULT NULL COMMENT '类型,01-流入;02-流出',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='信息表';


INSERT INTO TB_TABLE VALUES('1','111',120,'01');
INSERT INTO TB_TABLE VALUES('2','111',80,'02');
INSERT INTO TB_TABLE VALUES('3','111',30,'01');
INSERT INTO TB_TABLE VALUES('4','222',70,'01');
INSERT INTO TB_TABLE VALUES('5','222',50,'02');

预期输出效果:

业务编号      流入金额      流出金额

111                    150            80

222                    70              50

方法一:

扫描二维码关注公众号,回复: 207529 查看本文章
select 
t.biz_num,
sum(case when t.type='01' then t.biz_amt end) as bizAmtIn,
sum(case when t.type='02' then t.biz_amt end) as bizAmtOut
from tb_table t
where t.type in ('01','02')
group by t.biz_num

 方法二:

select 
t.biz_num,
sum(if(t.type='01',t.biz_amt,0)) as bizAmtIn,
sum(if(t.type='02',t.biz_amt,0)) as bizAmtOut
from tb_table t
where t.type in ('01','02')
group by t.biz_num;

猜你喜欢

转载自wqlin-007.iteye.com/blog/2399912