Oracle的行列轉換

2021-08-26 10:27:30 字數 676 閱讀 6441

[b]行轉列:[/b]

1.列固定的情況,通過max+decode變換。

2.列不固定的時候,通過自定義function轉換。

3.通過層次查詢,將行轉換成字串。

oracle 9i中沒有connect_by_isleaf,可以使用分析函式實現

select n.tid,

max(n.typename) keep(dense_rank last order by n.rn) typename

from (select m.tid,

m.rn,

substr(sys_connect_by_path(m.typename, ','), 2) typename

from (select t.*,

row_number() over(partition by t.tid order by t.typeid) rn

from t) m

start with m.rn = 1

connect by prior m.rn = m.rn - 1

and prior m.tid = m.tid) n

group by n.tid

[b]列轉行:[/b]

1.union all。

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 轉換為 語文 數學 英...