wmsys.wm_concat功能來行轉列
create table idtable (id number,name varchar2(30));
insert into idtable values(10,'ab');
insert into idtable values(10,'bc');
insert into idtable values(10,'cd');
insert into idtable values(20,'hi');
insert into idtable values(20,'ij');
insert into idtable values(20,'mn');
insert into idtable values(30,'za');
insert into idtable values(30,'zb');
insert into idtable values(30,'zc');
select * from idtable
--按同乙個id,把行內容轉換為列內容
select id,wmsys.wm_concat(name) name from idtable group by id;
--每行id都把相同id的行內容轉換為列,然後根據id的排序進行內容疊加.
select id,wmsys.wm_concat(name) over (order by id) name from idtable
--按照id,name進行排名,每一行內容都彙總前一行的內容(內容疊加)
select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;
--每行id都把條件相同id的行內容轉換為列內容
select id,wmsys.wm_concat(name) over (partition by id) name from idtable;
一、資料準備
sql> drop table temp;
sql> create table temp (col1 varchar2(3), col2 varchar2(200));
sql> insert into temp values('a','a,aa,aaa');
sql> insert into temp values('b','b,bb,bbb');
sql> select * from temp;
col1 col2
------- -----------------
a a,aa,aaa
b b,bb,bbb
二、實現目的
col1 col2
------- -----------------
a a
a aa
a aaa
b b
b bb
b bbb
三、實現方法
select col1, regexp_substr(col2, '[^,]+', 1, n) col2
from temp, (select rownum n from dual connect by rownum < 100)
where n <= length(regexp_replace(col2, '[^,]', null)) + 1
order by 1, 2
Oracle行列轉換
1.列轉行 create table t col row id int,c1 varchar2 10 c2 varchar2 10 c3 varchar2 10 insert into t col row values 1,v11 v21 v31 insert into t col row valu...
Oracle行列轉換
行轉列 select count over cnt,rn,str from select rownum rn,substr a.str,instr a.str,1,a.n 1,instr a.str,1,a.n 1 instr a.str,1,a.n 1 str from select a,b,c,...
oracle 行列轉換
q 如何實現行列轉換 a 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英...