行列转换并且进行行列数据统计 rollup

14 篇文章 0 订阅

--具体的行列转换并且进行行列数据统计

create table tmpA 
( 
Dept char(3) , 
Sect char(3) , 
line char(3) , 
Line_Desc varchar(30) , 
Title_code char(3) , 
Title_Desc varchar(30) , 
Headcount int 
);


-- 加入一些数据记录

Insert into tmpA values ('DA' , 'S1' , 'La' , 'Line a ' , 'T1' , 'Title Desc 1', 3 );
Insert into tmpA values ('DA' , 'S1' , 'La' , 'Line a ' , 'T2' , 'Title Desc 2' , 3 );
Insert into tmpA values ('DA' , 'S1' , 'Lb' , 'Line b ' , 'T1' , 'Title Desc 1' , 3 );
Insert into tmpA values ('DA' , 'S1' , 'Lb' , 'Line b ' , 'T2' , 'Title Desc 2' , 3 );
Insert into tmpA values ('DA' , 'S2' , 'La' , 'Line a ' , 'T1' , 'Title Desc 1' , 3 );
Insert into tmpA values ('DA' , 'S2' , 'Lb' , 'Line b ' , 'T1' ,  'Title Desc 1' , 3 );
Insert into tmpA values ('DB' , 'S1' , 'Lb' , 'Line b ' , 'T1' ,  'Title Desc 1' , 3 );
Insert into tmpA values ('DB' , 'S2' , 'La' , 'Line a ' , 'T1' ,  'Title Desc 1' , 3 );
Insert into tmpA values ('DB' , 'S2' , 'Lb' , 'Line b ' , 'T1' ,  'Title Desc 1' , 3 );
Insert into tmpA values ('DC' , 'S1' , 'La' , 'Line a ' , 'T1' ,  'Title Desc 1' , 3 );
Insert into tmpA values ('DC' , 'S2' , 'Lb' , 'Line b ' , 'T1' ,  'Title Desc 1' , 3);

select * from tmpA;


 

-- 行转列一 行统计

select dept,decode(sect,'S1 ',sum(Headcount),0) as s1,
       decode(sect,'S2 ',sum(Headcount),0) as s2,
       sum(Headcount) as 行合计 
       from tmpA  
       group by dept,sect,Headcount;


 

-- 行转列二 行统计                  

select dept,sum(decode(sect,'S1 ',Headcount,0)) as s1,
       sum(decode(sect,'S2 ',Headcount,0)) as s2,
       sum(Headcount) as 行合计 
       from tmpA  
       group by dept,Headcount;  


      
-- 列统计

select dept,decode(sect,'S1 ',sum(TO_NUMBER(Headcount)),'0') as s1,
       decode(sect,'S2 ',sum(TO_NUMBER(Headcount)),'0') as s2,
       sum(TO_NUMBER(Headcount)) as 行合计 
       from tmpA  
       group by sect,rollup(dept,headcount);
       


      
-- 行列统计

select dept,sum(decode(sect,'S1 ',Headcount,0)) as s1,
       sum(decode(sect,'S2 ',Headcount,0)) as s2,
       sum(Headcount) as 行合计 
       from tmpA  
       group by rollup(dept);       



      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值