2016-08-03 2 views
0

Итак, у меня довольно нетрадиционная проблема. Я хотел бы иметь возможность объединять строки с одним ID в одну большую строку. Чтобы проиллюстрировать мою проблему, позвольте мне привести пример. Вот запрос:PostgreSQL: как объединить строки

SELECT b.id AS "ID", 
     m.content AS "Conversation" 
FROM bookings b 
INNER JOIN conversations c on b.id = c.conversable_id AND c.conversable_type = 'Booking' 
INNER JOIN messages m on m.conversation_id = c.id 
WHERE b.state IS NOT NULL 
GROUP BY 1,2 
LIMIT 1000; 

А вот выход:

ID  **Conversation 
1223 "blah, blah, blah, blah" 
1223 " ... blaaaah, blah.." 
1223 "more blaaah" 
1223 "last blah" 
5000 "new id, with more blah" 
5000 "and the blah continues" 

Есть ли способ конкатенации строк в разговоре одного агрегатной строку, сохраняя при этом идентификатора?

Как это:

ID  Conversation 
1223 "blah, blah, blah, blah, ... blaaaah blah.. more blaaah, last blah" 
5000 "new id, with more blah and the blah continues" 

Я уверен, что это эффективный способ сделать это. Я просто не могу понять это сам.

+0

'group_concat()' ваш друг. – wildplasser

+0

Разве это не MySQL? – DBE7

+0

Может быть. Может быть, 'string_agg()', то? – wildplasser

ответ

0

Я смог решить свою проблему, посмотрев блестящие ответы на вопросы this question. Это было так же просто, как использование функции PostgreSQL string_agg().

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