Tom Kyte zapewnia bardzo wygodny sposób na zrobienie tego i działa z Oracle 9i z niestandardową funkcją agregacji. Agreguje się z przecinkami, ale możesz zmodyfikować treść funkcji dla potoków.
Począwszy od Oracle 11g, możesz zrobić:
SELECT LISTAGG(column, separator) WITHIN GROUP (ORDER BY field)
FROM dataSource
GROUP BY grouping columns
Ta strona internetowa zawiera dodatkowe metody, w tym tę, którą wymieniłeś, a która rzeczywiście nie jest tak naprawdę wydajna.