项目背景
今天开发人员要生成业务报表,应有的数据格式如下
测试数据
希望等到如下结果
生成结果
说明:总合格率这一列不用考虑实现,使用oracle花了两个多小时才实现
。
大家需要花多少时间呢,对postgresql感兴趣的朋友,可从花时间试试?
oracle实现方式–decode
create table tt_tt(dsmc varchar2(100),sblx char(1),sl number,hgl number)
insert into tt_tt values(‘成都’,‘A’,98,0.95);
insert into tt_tt values(‘成都’,‘B’,98,0.95);
insert into tt_tt values(‘成都’,‘C’,98,0.96);
insert into tt_tt values(‘遂宁’,‘A’,97,0.95);
insert into tt_tt values(‘遂宁’,‘D’,98,0.95);
insert into tt_tt values(‘德阳’,‘B’,99,0.97);
insert into tt_tt values(‘德阳’,‘C’,98,0.95);
insert into tt_tt values(‘德阳’,‘D’,100,0.98);
select dsmc,max(decode(sblx,‘A’,sl)) A_SL,max(decode(sblx,‘A’,hgl)) A_HGL,max(decode(sblx,‘B’,sl)) B_SL,max(decode(sblx,‘B’,hgl))B_HGL ,
max(decode(sblx,‘C’,sl)) C_SL,max(decode(sblx,‘C’,hgl)) C_HGL,max(decode(sblx,‘D’,sl)) D_SL,max(decode(sblx,‘D’,hgl)) D_HGL
from tt_tt
group by dsmc