[pgsql-jp: 35213] Re: 複数行を横展開して select する方法 (文字列)

a_yari a_yari @ yahoo.co.jp
2005年 4月 8日 (金) 15:43:55 JST


あつしです。

> 【マスタテーブル】
> ID  TITLE
> --------------
> 1   MASTER1
> 2   MASTER2
> --------------
> 
> 【属性テーブル】
> ID  Name
> --------------
> 1   AAAAAA
> 1   BBBBBB
> 1   CCCCCC
> 2   DDDDDD
> 2   EEEEEE
> --------------
> 
> 
> ■以下の様に抽出することは可能でしょうか?
> 
> ID TITLE     Name1  Name2  Name3  Name4
> --------------------------------------------
> 1  MASTER1   AAAAAA BBBBBB CCCCCC null
> 2  MASTER2   DDDDDD EEEEEE null   null
> --------------------------------------------
> 

contrib/tablefunc にcrosstabNという関数があります。
ちょうど今調べていたところでまだよく分かりませんがご希望の動作に
近いような気がします。

SELECT * FROM crosstab4('select title ,id,name from mast join attr
using(id) order by 1,2');

row_name category_1 category_2 category_3 category_4
----------------------------------------------------
MASTER1  AAAAAA     BBBBBB     CCCCCC
MASTER2  DDDDDD     EEEEEE

詳しい仕様はわかりませんが参考になれば

---
a_yari @ yahoo.co.jp



pgsql-jp メーリングリストの案内