本文对Oracle 11g的行列转换操作的简单实例,供初学者参考。现有问题如下:问题描述:
Table1
Id Name
1 Taylor
2 Jim
Table2
FId value attr
1 23 age
1 boy sex
2 26 age
2 boy sexTable1 Id 是主键,Table2 的FId 是外键,对应Table1 的主键要查出age大于24,且sex 是boy 的人的name
结果是:
Name
Jim创建表病插入数据,其中TABLE1为源表,TABLE2为目标表,脚本如下:create table table2(
fid number(12),
value varchar2(10),
attr varchar2(10)
);
insert into table2 values(1,"23","age");
insert into table2 values(1,"boy","sex");
insert into table2 values(2,"26","age");
insert into table2 values(2,"boy","sex");
create table table1(
id number(12),
name varchar2(20)
);
insert into table1 values(1,"Taylor");
insert into table1 values(2,"Jim");
如下语句可实现表TABLE1的行列转换:select *
from table2 pivot(max(value) as attr for(attr) in("age" as age,
"sex" as sex)); 最后如下语句即可解答开始的问题: with pivot_table2 as(
select *
from table2 pivot(max(value) as attr for(attr) in("age" as age,
"sex" as sex)))
select t1.* from pivot_table2 pt,table1 t1
where pt.fid=t1.id
and pt.age_attr>24 and pt.sex_attr="boy" Oracle 11g行列转换之UNPIVOTMySQL ON 子句和 USING 子句相关资讯 Oracle 11g
- Oracle 11g导入到10g引起的错误 (11/16/2015 10:55:27)
- Oracle 11g 导库导不出空表问题 (08/19/2015 19:55:58)
- Oracle 11g统计信息收集--多列统计 (07/24/2015 10:32:39)
| - Oracle 11gClone安装方法 (08/24/2015 20:25:41)
- Oracle 11g中和SQL TUNING相关的新 (08/12/2015 11:22:52)
- Oracle 11g数据泵详解 (07/08/2015 08:29:51)
|
本文评论 查看全部评论 (0)