postgresql 列转行

 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函数,直接解决。

请使用浏览器的分享功能分享到微信等