我有一张价值表:
表1:表1 id Hirerachy 1:A:B:C 2:P:Q:R:S:T 3:M:N
我们如何将其拆分如下:
表1:表2 id col1 col2 col3 col4 col5 col6 col7 1 C B A N / A N / A N / A N / A. 2 T S R Q P N / A N / A. 3 N M N / A N / A N / A N / A N / A
该行包含分隔的列更改。
请使用游标在SQL / PLSQL中提供完整的解决方案来帮助我。
答案 0 :(得分:0)
我自己回答,因为我成功地找到了解决方案:
SELECT table1.id, 案件 当REGEXP_COUNT(b.Hirerachy,':')> 0 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':')) ELSE'N / A' 结束“col1”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 1 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 1) ELSE'N / A' 结束“col2”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 2 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 2) ELSE'N / A' 结束“col3”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 3 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 3) ELSE'N / A' 结束“col4”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 4 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 4) ELSE'N / A' 结束“col5”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')>五 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 5) ELSE'N / A' 结束“col6”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 6 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 6) ELSE'N / A' 结束“col7”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 7 那么regexp_substr(Hierarchy,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 7) ELSE'N / A' 结束“col8”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 8 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 8) ELSE'N / A' 结束“col9”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 9 那么regexp_substr(Hierarchy,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 9) ELSE'N / A' 结束“col10”,
CASE 当REGEXP_COUNT(b.Hirerachy,':')> 10 那么regexp_substr(层次结构,'[^:] +',1,REGEXP_COUNT(b.Hirerachy,':') - 10) ELSE'N / A' 结束“col11”
FROM table1