I have a table which I need two columns split into rows
eg: Table name : MY_TABLE_FILE
x
ref_no cus_no amount date
AA1 123 325000,200000,317085,2657915 20190522,20190405,20190402,20190322
AA2 265 1000000,1500000 20190125,20190102
AA3 457 475000 20190101
Output expected
ref_no cus_no amount date
AA1 123 325000 20190522
AA1 123 200000 20190405
AA1 123 317085 20190402
AA1 123 2657915 20190322
AA2 265 1000000 20190125
AA2 265 1500000 20190102
AA3 457 475000 20190101
Code which i tried
SELECT ref_no,cus_no,
trim(regexp_substr(amount, '[^,]+',1,LEVEL)),
trim(regexp_substr(date, '[^,]+', 1,LEVEL))
FROM MY_TABLE_FILE
CONNECT BY LEVEL <= regexp_count(amount, ',')+1
but i’m not get the output, Appreciate if you could help with the code
Advertisement
Answer
SELECT distinct ref_no, cus_no,
trim(regexp_substr(amount, '[^,]+', 1, level)) amount,
trim(regexp_substr(dater, '[^,]+', 1, level)) dater
FROM (SELECT ref_no,cus_no, amount,dater FROM TAB) t
CONNECT BY instr(amount, ',', 1, level - 1) > 0
ORDER BY ref_no