Tim Hall ma dość kanoniczną listę technik agregacji ciągów w Oracle.
To, którą technikę zastosujesz, zależy od wielu czynników, w tym od wersji Oracle i tego, czy szukasz rozwiązania opartego wyłącznie na SQL. Jeśli używasz Oracle 11.2, prawdopodobnie sugeruję użycie LISTAGG
SELECT column1, listagg( column2, ',' ) WITHIN GROUP( order by column2 )
FROM table_name
GROUP BY column1
Jeśli używasz wcześniejszej wersji Oracle, zakładając, że nie potrzebujesz rozwiązania czysto SQL, ogólnie wolałbym używać podejścia z funkcją agregującą zdefiniowaną przez użytkownika.