[pgsql-jp: 30545] Re: 縦のデータを横に出力するSQL文

WADA Hiroyuki wada @ komine-ag.co.jp
2003年 7月 22日 (火) 10:56:18 JST


和田です。

ながい wrote:

> テーブルの中に同じkeyは五つまでしかありません。
> 
> id,key
>  1,  a
>  2,  a
>  3,  a
>  4,  b
>  5,  b
> 
> このとき下記のような出力をさせるためのSQL文は
> どう書けばよいのでしょうか?
> (keyでグループ化してid順に並べる)
> 
> a,1,2,3,N,N
> b,4,5,N,N,N

まずviewを定義して、

create view pgsql30538v as
select t1.key,t1.id,count(*) as no
from pgsql30538 as t1, pgsql30538 as t2
where t1.key=t2.key and t1.id >= t2.id
group by t1.key,t1.id
order by t1.key,t1.id

結合します。

select distinct(t.key),t1.id,t2.id,t3.id,t4.id,t5.id
from pgsql30538v as t
 left join (select * from pgsql30538v where no=1) as t1 using(key)
 left join (select * from pgsql30538v where no=2) as t2 using(key)
 left join (select * from pgsql30538v where no=3) as t3 using(key)
 left join (select * from pgsql30538v where no=4) as t4 using(key)
 left join (select * from pgsql30538v where no=5) as t5 using(key)

このままだとidという列名が5つできてしまうので、asした方がいいですね。



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