将分隔的行拆分为 SQL 中的列

Split delimited row to column in SQL

我有一个 table 值:

Table1:Table1 id Hirerachy 1:A:B:C 2:P:Q:R:S:T 3:M:N

如何拆分如下:

Table1:Table2 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 中使用游标提供完整的解决方案。

我自己回答的,因为我成功找到了解决方案:

SELECTtable1.id, 案件 当 REGEXP_COUNT(b.Hirerachy, ':') > 0 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')) 其他 'N/A' 结束 "col1",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 1 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-1) 其他 'N/A' 结束 "col2",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 2 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-2) 其他 'N/A' 结束 "col3",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 3 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-3) 其他 'N/A' 结束 "col4",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 4 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-4) 其他 'N/A' 结束 "col5",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 5 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-5) 其他 'N/A' 结束 "col6",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 6 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-6) 其他 'N/A' 结束 "col7",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 7 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-7) 其他 'N/A' 结束 "col8",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 8 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-8) 其他 'N/A' 结束 "col9",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 9 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-9) 其他 'N/A' 结束 "col10",

案例 当 REGEXP_COUNT(b.Hirerachy, ':') > 10 THEN regexp_substr(层次结构,'[^:]+', 1, REGEXP_COUNT(b.Hirerachy, ':')-10) 其他 'N/A' 结束"col11"

来自表 1