oracle列转行

来源:互联网 发布:db2删除数据库实例 编辑:程序博客网 时间:2024/06/06 09:37

1.原表

2.sql和之后的数据

select b as id,c as name  from

(with test as (select ta.id b,ta.name c from 表名 ta )
select b,substr(t.ca,instr(t.ca, ',', 1, c.lv) + 1,instr(t.ca, ',', 1, c.lv + 1) - (instr(t.ca, ',', 1, c.lv) + 1)) AS c
from (select b,',' || c || ',' AS ca,length(c || ',') - nvl(length(REPLACE(c, ',')), 0) AS cnt FROM test) t,

(select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt ) order by b



0 0
原创粉丝点击