Se você tem 11g Release 2, você pode usar
Listagg
:Select a, Listagg(b, ', ') Within Group ( Order By b )
From t
Group By a
Permite ordenar seus valores, e já vem com Oracle:
A1 B1, B2, B3
A2 B1, B4
Caso contrário, você pode usar o
stragg
função de Tom Kyte, descrita em Rows to String. Select a, stragg(b)
From t
Group By a
retorna
A1 B1,B3,B2
A2 B1,B4