Ако не искате да актуализирате съществуващата таблица и искате само да изберете данните, тогава можете да използвате тази донякъде трудоемка заявка.
http://sqlfiddle.com/#!4/22909/4
WITH changed_table AS
(SELECT val1, EXTRACTVALUE (x.COLUMN_VALUE, 'e') val2new
FROM (SELECT val1, val2 xml_str
FROM table1),
TABLE (XMLSEQUENCE (XMLTYPE ( '<e><e>'
|| REPLACE (xml_str, ',', '</e><e>')
|| '</e></e>'
).EXTRACT ('e/e')
)
) x)
SELECT ct.val1, listagg(table2.val2,',') within group (order by table2.val2) val2
FROM changed_table ct, table2 table2
WHERE ct.val2new = table2.val1
group by ct.val1;
Използвах XMLTYPE, за да разделя числата, разделени със запетая, на редове. След това съедини редовете с втората таблица, за да получи описанието и накрая използва функцията LISTAGG, за да образува низ, разделен със запетаи. Не знам колко ефективна е тази заявка. Съгласен съм с коментара на Марк Банистър.