2016-12-01 6 views

ответ

0

Так вот мы создаем некоторые тестовые данные

CREATE TABLE foo AS 
SELECT * FROM (
    VALUES (1,'A'),(1,'B'),(2,'H'),(2,'G'),(2,'A') 
) AS f(id,col); 

Это должно работать,

SELECT id, array_to_string(array_agg(col), '') 
FROM table 
GROUP BY id; 

Вот что мы делаем,

  1. GROUP BY ид.
  2. Построить PostgreSQL text[] (текстовый массив) из этой колонки с array_agg
  3. Преобразовать массив обратно в текст, вступив на пустую строку «» с array_to_string.

Вы также можете использовать string_agg,

SELECT id, string_agg(col, '') 
FROM foo 
GROUP BY id; 
+0

Я не знал о array_agg и array_to_string функции, но он работал отлично! – Judit

0

Чем лучше soluction использует str_sum agregate функцию

select 
user, 
str_sum(column_name,'') 
from table_name 
group by user; 
+0

Сообщение об ошибке: «Функция str_sum (символ меняется, неизвестно) не существует», но работающая ниже функция работала! – Judit

+0

Ваша версия postgres? –

+0

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

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