Als u de bestaande tabel niet wilt bijwerken en alleen de gegevens wilt selecteren, kunt u deze ietwat omslachtige query gebruiken.
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;
Ik heb het XMLTYPE gebruikt om de door komma's gescheiden getallen in rijen te scheiden. Voeg vervolgens de rijen toe met de tweede tabel om de beschrijving te krijgen en gebruikte uiteindelijk de LISTAGG-functie om een door komma's gescheiden tekenreeks te vormen. Weet niet hoe efficiënt deze query is. Ik ben het eens met de opmerking van Mark Bannister.