Вы можете попытаться использовать connect by
с instr
получить ,
номер группы для уровня, затем используйте regexp_substr
, чтобы получить строку.
Настройка схемы Oracle 11g R2 :
CREATE TABLE T(
Country varchar(50),
Code varchar(50)
);
INSERT INTO T VALUES ('USA','23, 24, 25, 30');
INSERT INTO T VALUES ('Canada','40, 50, 70');
Запрос 1 :
select distinct Country,trim(regexp_substr(Code, '[^,]+', 1, level)) Code
FROM T
connect by instr(Code, ',', 1, level - 1) > 0
ORDER BY Country desc
Результаты :
| COUNTRY | CODE |
|---------|------|
| USA | 23 |
| USA | 24 |
| USA | 25 |
| USA | 30 |
| Canada | 40 |
| Canada | 50 |
| Canada | 70 |