在SQL中拆分分隔行到列

时间:2015-01-21 06:01:40

标签: sql plsql oracle11g

我有一张价值表:

表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中提供完整的解决方案来帮助我。

1 个答案:

答案 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