您的位置:首页 > 数据库 > Oracle

oracle列转行

2015-09-01 11:06 585 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: