类似Mysql group_concat 的效果。
9.0之后的版本
group by 后如何冗余子表的字段。 比如A、B两个表。B是A的子表,B中有A的主键。查询A的时候,把B的某个字段显示出来,用逗号隔开。
SELECT a.id, string_agg(b.name, ',') FROM A a, B b GROUP BY a.id
使用string_agg函数即可。
9.0之前的版本(此例子为网络收集,未验证)
- 自定义聚集函数
CREATE AGGREGATE group_concat(anyelement)(sfunc = array_append, -- 每行的操作函数,将本行append到数组里stype = anyarray, -- 聚集后返回数组类型initcond = '{}' -- 初始化空数组);
SELECT id, array_to_string(group_concat(name),',') from A group by id;
- array_agg
select array_to_string(ARRAY(SELECT unnest(array_agg(name))),',') from A;