[pgsql-jp: 32912] クロス集計の方法について

Kaoru Tsuchiya kaoru-t @ yf7.so-net.ne.jp
2004年 5月 8日 (土) 17:59:48 JST


土屋と申します。

集計の方法で困っています。

以下のようなテーブルの内容を id 毎に各場所の登録日付
を出したいのですが、上手くいきません。
過去ログ等からクロス集計の方法を参校にして以下のような
SQL文を作成しましたが、これではカウントされた値が表示されます。

t_test
id   場所  登録日付
------------------
001  AAA   04/01
002  AAA   04/03
003  BBB   04/01
001  CCC   04/01
001  BBB   04/10
002  BBB   04/11
003  CCC   04/21

      ↓ このような表示にしたい

id   AAA    BBB    CCC
---------------------------
001  04/01  04/10  04/01
002  04/03  04/11
003         04/01  04/21


select id, 
sum(case when 場所 = 'AAA' then 1 else 0 end) as AAA
sum(case when 場所 = 'BBB' then 1 else 0 end) as BBB
sum(case when 場所 = 'CCC' then 1 else 0 end) as CCC
from t_test group by id;

上記の SQL では以下のようになります。

id   AAA    BBB    CCC
---------------------------
001   1      1      1
002   1      1      0
003   0      1      1

どのように SQL文を書けば良いでしょうか?

宜しくお願い申し上げます。

********************************************
    Kaoru Tsuchiya                        
    e-mail: kaoru-t @ yf7.so-net.ne.jp     
********************************************





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