[pgsql-jp: 32848] Re: SELECT文 ORプロシージャ、どちらが良いでしょうか。
Yoshihisa Inoue
bok @ bbsbrain.ne.jp
2004年 4月 21日 (水) 17:41:51 JST
ども井上と申します。
Hiroki Ohtsuka <h_ohtsuka @ mmplus.co.jp> wrote:
> 2つのテーブルから、ある条件でのSELECTに悩んでおります。
> SQL文のみでSELECTできるのであれば、SQL文のみでSELECTしたいです。
> 2.出力したい形は以下のようになっています。
> 出力テーブル
> コード 分類コード ID4 ID3 ID2 ID0
> ---------------------------------------------------
> 10 18 4000 3000 2000 1000
> 10 19 4000 3000 2000 1000
> 10 20 4000 3000 2000 1000
> ■条件
> 定義テーブルに登録されている分類コードを基準として、
> 登録テーブルの登録ID別に一覧を作成する。
ってことはクロス集計ですよね。PostgreSQLでは、クロス集計の機能がないので、
下記みたいなかんじで毎回SQLつくらないと集計できないと思います。
select
t.code,
t.bunrui,
sum(ID0.sum) as ID0,
sum(ID1.sum) as ID1,
sum(ID10.sum) as ID10,
sum(ID20.sum) as ID20
from
teigi as t
left join
(select
code,
bunrui,
sum(kingaku) as sum
from
touroku
where
id = 0
group by
code,
bunrui
) as ID0 on ID0.code = t.code and ID0.bunrui = t.bunrui
left join
(select
code,
bunrui,
sum(kingaku) as sum
from
touroku
where
id = 1
group by
code,
bunrui
) as ID1 on ID1.code = t.code and ID1.bunrui = t.bunrui
left join
(select
code,
bunrui,
sum(kingaku) as sum
from
touroku
where
id = 10
group by
code,
bunrui
) as ID10 on ID10.code = t.code and ID10.bunrui = t.bunrui
left join
(select
code,
bunrui,
sum(kingaku) as sum
from
touroku
where
id = 20
group by
code,
bunrui
) as ID20 on ID20.code = t.code and ID20.bunrui = t.bunrui
group by t.code,t.bunrui;
他にやり方あったら私も知りたいです。
By Yoshihisa Inoue
pgsql-jp メーリングリストの案内