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