PG 里面没有列转行的函数,向oracle 的wm_concat等,mysql的group_concat,但是PG里面没有这个函数,怎么办?我们考虑PG自带的自建函数。
具体的语法可以见官方文档:http://www.postgresql.org/docs/9.2/static/sql-createaggregate.html
我们这里就不说具体的的语法规则了,自建函数如下:
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);
原表:
create table daily_test.emp
(
empno varchar,
ename varchar,
deptno varchar
)
查询数据如下:
OK,我们根据deptno创建聚合函数,根据ename 组合
但是我们要显示的字符串,不是数组,怎么办?用PG自带的array_to_string函数,直接解决。