Nếu bạn không muốn cập nhật bảng hiện có và chỉ muốn chọn dữ liệu thì bạn có thể sử dụng truy vấn hơi tốn công sức này.
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;
Tôi đã sử dụng XMLTYPE để phân tách các số được phân tách bằng dấu phẩy thành các hàng. Sau đó, nối các hàng với bảng thứ hai để lấy mô tả và cuối cùng sử dụng hàm LISTAGG để tạo thành chuỗi được phân tách bằng dấu phẩy. Không biết truy vấn này hiệu quả như thế nào. Tôi đồng ý với nhận xét của Mark Bannister.