Hi Mike,
I have come across a problem which I cant seem to solve in a nice wayYou can create a custom aggregate function like this: alexey@[local]/alexey=# create aggregate array_cat_agg(anyarray) (SFUNC = array_cat, STYPE = anyarray, COMBINEFUNC = array_cat, PARALLEL = SAFE); CREATE AGGREGATE And use it like this: alexey@[local]/alexey=# select grp, array_cat_agg(array['--foo', bar || '=' || baz]) from (values ('g1', 'a', 'b'), ('g1', 'c', 'd'), ('g2', 'e', 'f')) _ (grp, bar, baz) group by grp; ┌─────┬───────────────────────┐ │ grp │ array_cat_agg │ ├─────┼───────────────────────┤ │ g2 │ {--foo,e=f} │ │ g1 │ {--foo,a=b,--foo,c=d} │ └─────┴───────────────────────┘ (2 rows) Is that what you need? Best, Alex |