2016-03-30 2 views
-1

Я использую PostgreSQL. У меня есть одна таблица со столбцами: id, city, country. У меня есть несколько городов для каждой страны.Результаты Concat с PostgreSQL

Например:

ID  Country  City 
1  Brazil  Rio de Janeiro 
2  Argentina Buenos Aires 
3  Argentina Bariloche 

И я хочу ВЫБРАТЬ, который возвращает что-то вроде

Country  Cities 
Brazil  (Rio de Janeiro) 
Argentina (Buenos Aires, Bariloche) 

Как я могу это сделать?

+1

что вы пробовали? http://www.postgresql.org/docs/9.4/static/functions-aggregate.html –

+1

Возможный дубликат http://stackoverflow.com/questions/29557563/whats-the-equivalent-for-listagg-in-postgres – leqid

+0

улучшенное форматирование – showdev

ответ

0

В зависимости от того, что вы хотите получить в наборе результатов, вы можете использовать функции array_agg() или string_agg().

WITH t(id,country,city) AS (VALUES 
    (1,'Brazil','Rio de Janeiro'), 
    (2,'Argentina','Buenos Aires'), 
    (3,'Argentina','Bariloche') 
) 
SELECT country,'(' || string_agg(city,',') || ')' FROM t 
GROUP BY country; 
Смежные вопросы