postgresql 列轉行

yang1721發表於2013-11-06

 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函式,直接解決。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16674653/viewspace-775880/,如需轉載,請註明出處,否則將追究法律責任。

相關文章