[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 メーリングリストの案内