У меня есть таблица вроде этого:Построение строки на основе столбцов из группы
user 1 A
user 1 B
user 2 H
user 2 G
user 2 A
и мне нужен результат, как:
user 1 AB
user 2 HGA
Есть ли способ, чтобы получить результат, как это ?
У меня есть таблица вроде этого:Построение строки на основе столбцов из группы
user 1 A
user 1 B
user 2 H
user 2 G
user 2 A
и мне нужен результат, как:
user 1 AB
user 2 HGA
Есть ли способ, чтобы получить результат, как это ?
Так вот мы создаем некоторые тестовые данные
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;
Вот что мы делаем,
text[]
(текстовый массив) из этой колонки с array_agg
array_to_string
.Вы также можете использовать string_agg
,
SELECT id, string_agg(col, '')
FROM foo
GROUP BY id;
Чем лучше soluction использует str_sum
agregate функцию
select
user,
str_sum(column_name,'')
from table_name
group by user;
Сообщение об ошибке: «Функция str_sum (символ меняется, неизвестно) не существует», но работающая ниже функция работала! – Judit
Ваша версия postgres? –
Я думаю, вы имеете в виду string_agg, я обновил свой пример, чтобы показать его. –
Я не знал о array_agg и array_to_string функции, но он работал отлично! – Judit