add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table mytable as (
select
1 ID,
'T1;T2;T3' column_1,
'B1;B5;B10;B13' column_2
from dual
union all
select
2 ID,
'T7;T8;T9;T10;T11',
'B2;B3;B5'
from dual
);
2 rows affected

WITH DATAA AS (
SELECT DISTINCT
ID,
REGEXP_SUBSTR(COLUMN_1, '[^;]+', 1, LEVEL) COLUMN_1,
REGEXP_SUBSTR(COLUMN_2, '[^;]+', 1, LEVEL) COLUMN_2
FROM
MYTABLE
CONNECT BY REGEXP_SUBSTR(COLUMN_1, '[^;]+', 1, LEVEL) IS NOT NULL
OR REGEXP_SUBSTR(COLUMN_2, '[^;]+', 1, LEVEL) IS NOT NULL
)
SELECT
ID,
COLUMN_1,
COLUMN_2
FROM
(
SELECT DISTINCT
D1.ID,
D1.COLUMN_1,
D2.COLUMN_2
FROM
DATAA D1
JOIN DATAA D2 ON ( D1.ID = D2.ID )
)
WHERE
( COLUMN_1 IS NOT NULL
AND COLUMN_2 IS NOT NULL )
ORDER BY
ID,
COLUMN_1;
ID COLUMN_1 COLUMN_2
1 T1 B13
1 T1 B1
1 T1 B5
1 T1 B10
1 T2 B1
1 T2 B10
1 T2 B5
1 T2 B13
1 T3 B1
1 T3 B13
1 T3 B5
1 T3 B10
2 T10 B5
2 T10 B3
2 T10 B2
2 T11 B3
2 T11 B2
2 T11 B5
2 T7 B5
2 T7 B2
2 T7 B3
2 T8 B3
2 T8 B5
2 T8 B2
2 T9 B2
2 T9 B3
2 T9 B5