文對Oracle 11g的行列轉(zhuǎn)換操作的簡單實例,供初學者參考。
現(xiàn)有問題如下:
問題描述:
Table1
Id Name
1 Taylor
2 Jim
Table2
FId value attr-
1 23 age
1 boy sex
2 26 age
2 boy sex
Table1 Id 是主鍵,Table2 的FId 是外鍵,對應(yīng)Table1 的主鍵
要查出age大于24,且sex 是boy 的人的name
結(jié)果是:
Name
Jim
創(chuàng)建表病插入數(shù)據(jù),其中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');
如下語句可實現(xiàn)表TABLE1的行列轉(zhuǎn)換:
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' 本文出自:億恩科技【www.riomediacenter.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|