2013-11-06 5 views
0

У меня есть таблица структурированную что-то вроде этого:Получить все элементы столбцов для каждого уникального идентификатора в таблице

profile | tag 
------------------------- 
p1  | tag1 
p1  | tag2 
p1  | tag3 
p2  | tag1 
p2  | tag3 

Я хочу, чтобы выполнить запрос, который возвращает что-то вроде:

tag1, tag2, tag3 
tag1, tag3 

В основном, для каждого уникального профиля - список тегов, которые существуют в таблице.

Возможно ли это, или мне нужно иметь уникальный столбец в моем результате для каждого тега, который меня волнует?

Спасибо!

ответ

2

Это возвращает то, что вы хотите:

SELECT array_agg(tag) 
FROM table1 
GROUP BY profile 

Или:

SELECT string_agg(tag, ',') 
FROM table1 
GROUP BY profile 

string_agg позволяет вам указать, какой разделитель вы хотите, и упорядочивает результаты в каждой строке.

SQLFIDDLE DEMO

+0

или 'выберите профиль, array_to_string (array_agg (тег), '') '. +1 –

+0

'string_agg (tag, ',')', вероятно, лучше –

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