将分隔的行拆分为 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
我有一个 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