Если у вас есть 11g Release 2, вы можете использовать Listagg
:
Select a, Listagg(b, ', ') Within Group ( Order By b )
From t
Group By a
Он позволяет сортировать ваши значения, и он уже поставляется с Oracle:
A1 B1, B2, B3
A2 B1, B4
В противном случае вы можете использовать stragg
функцию Tom Kyte , описанную в Rows to String .
Select a, stragg(b)
From t
Group By a
возвращает
A1 B1,B3,B2
A2 B1,B4