2010-04-19 3 views
2

У меня есть таблица элементов хранится таким образом:Agregate строки в заявлении Oracle SQL

A1 | B1 
A1 | B2 
A1 | B3 
A2 | B1 
A2 | B4 
... 

И мне нужно, чтобы получить с помощью SQL-запроса:

A1 | B1, B2, B3 
A2 | B1, B4 
... 
+0

дубликата этого вопроса: http://stackoverflow.com/questions/492563/oracle-combine-multiple-results-in -a-subquery-in-a-single-comma-separated-valu –

ответ

3

Если у вас есть 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 
+1

Питер, если бы OP был на 11gR2, они могли бы использовать LISTAGG? –

+0

@ carpenteri: Спасибо, отредактировал мой ответ. –

+0

К сожалению, у меня нет 11g – kilikopela

-2
SELECT * 
FROM `table1` 
ORDER BY `afield` ASC 

Используйте как этот

+2

Извините, но я не вижу, как это поможет? –

Смежные вопросы