Вам нужно будет определить, как , чтобы сгруппировать значения, которые имеют одинаковые category_id
. Объединить их? Рассчитать сумму?
Чтобы создать разделенные запятыми списки значений, ваше утверждение может выглядеть следующим образом:
SELECT category_id
,string_agg(col1, ', ') AS col1_list
,string_agg(col2, ', ') AS col2_list
FROM items
GROUP BY category_id
Вам нужен Postgres 9.0 или новее для string_agg(col1, ', ')
.
В более старых версиях вы можете заменить на array_to_string(array_agg(col1), ', ')
. Больше агрегатных функций здесь .
Агрегировать значения в PostgreSQL - это явно лучший подход по сравнению с агрегированием значений в клиенте. Postgres очень быстр в этом, и это уменьшает (сетевой) трафик.