У меня есть таблица элементов хранится таким образом:Agregate строки в заявлении Oracle SQL
A1 | B1
A1 | B2
A1 | B3
A2 | B1
A2 | B4
...
И мне нужно, чтобы получить с помощью SQL-запроса:
A1 | B1, B2, B3
A2 | B1, B4
...
У меня есть таблица элементов хранится таким образом:Agregate строки в заявлении Oracle SQL
A1 | B1
A1 | B2
A1 | B3
A2 | B1
A2 | B4
...
И мне нужно, чтобы получить с помощью SQL-запроса:
A1 | B1, B2, B3
A2 | B1, B4
...
Если у вас есть 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
Питер, если бы OP был на 11gR2, они могли бы использовать LISTAGG? –
@ carpenteri: Спасибо, отредактировал мой ответ. –
К сожалению, у меня нет 11g – kilikopela
SELECT *
FROM `table1`
ORDER BY `afield` ASC
Используйте как этот
Извините, но я не вижу, как это поможет? –
дубликата этого вопроса: http://stackoverflow.com/questions/492563/oracle-combine-multiple-results-in -a-subquery-in-a-single-comma-separated-valu –