oracle 行列转换 列名数字

Posted 温碧泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 行列转换 列名数字相关的知识,希望对你有一定的参考价值。

oracle 行列转换列名如果是数字,用双引号包住  如下:

 

--  建表

create table workinfo
(
wid integer primary key,
sid integer ,
CONSTRAINT sid foreign key(sid) references student(sid),
city nvarchar2(100),-- 就业城市
wage number(10,2),-- 月薪
workdate date,-- 就业时间
eid integer ,
CONSTRAINT eid foreign key(eid) references Emp(eid)-- 介绍人
);
--  假数据

insert into workinfo values(1001,8001,\'上海\',5000,to_date(\'2009-3-5\',\'yyyy-MM-dd\'),6005);
insert into workinfo values(1002,8002,\'上海\',4500,to_date(\'2010-3-5\',\'yyyy-MM-dd\'),6005);
insert into workinfo values(1003,8005,\'上海\',5500,to_date(\'2009-3-5\',\'yyyy-MM-dd\'),6005);
insert into workinfo values(1004,8003,\'杭州\',4000,to_date(\'2009-12-5\',\'yyyy-MM-dd\'),6006);
insert into workinfo values(1005,8004,\'杭州\',4500,to_date(\'2007-12-5\',\'yyyy-MM-dd\'),6006);
insert into workinfo values(1006,8006,\'南京\',4000,to_date(\'2009-12-5\',\'yyyy-MM-dd\'),6006);
insert into workinfo values(1007,8008,\'杭州\',4000,to_date(\'2009-12-5\',\'yyyy-MM-dd\'),6006);
insert into workinfo values(1008,8010,\'上海\',4000,to_date(\'2007-12-5\',\'yyyy-MM-dd\'),6007);
insert into workinfo values(1009,8007,\'杭州\',4400,to_date(\'2008-12-5\',\'yyyy-MM-dd\'),6007);
insert into workinfo values(1010,8009,\'杭州\',4000,to_date(\'2009-12-5\',\'yyyy-MM-dd\'),6007);

-- 统计各地区每年就业的人数,显示如下

select a.city,
              sum(case when a.years=\'2007\' then a.rs else 0 end) "2007",
              sum(case when a.years=\'2008\' then a.rs else 0 end) "2008",
              sum(case when a.years=\'2009\' then a.rs else 0 end) "2008",
              sum(case when a.years=\'2010\' then a.rs else 0 end) "2009"
from
(
    select city,to_char(workdate,\'yyyy\') years,count(sid)rs
    from workinfo
    group by city,to_char(workdate,\'yyyy\')
)a
group by a.city

 

结果如图:

以上是关于oracle 行列转换 列名数字的主要内容,如果未能解决你的问题,请参考以下文章

oracle中一个表的行列转换

oracle 行列转换问题

oracle行列转换问题

oracle 行列转换

求oracle大神帮忙解决下面这个行列转换问题,谢谢!

postgresql行列转换