[PHP-users 18889]Re: 検索結果を横軸に配置するには?

Kogo Ayataro ayataro @ dd.mbn.or.jp
2003年 11月 13日 (木) 10:17:42 JST


 こうごと申します。

 横に配置したい月の数が固定されていて(例えば3か月分)、毎月1度cronな
どでメンテナンスをする手間が気にならなければ、ピボットテーブルを使って
SQLで処理してしまうのもありかとは思います。

--- ピボットテーブルの定義
create table pivsample(month char(2),montha int,monthb int,monthc int);
insert into pivsample values('10',1,0,0);
insert into pivsample values('11',0,1,0);
insert into pivsample values('12',0,0,1);

--- 実行するSQL (あまり整理できてないですが...)
select B.tenki,sum(P.montha * B.quantity) as m10,sum(P.monthb * B.quantity) as m11,sum(P.monthc * B.quantity) as m12
from (
 select dt,ice_id,tenki,sum(quantity) as quantity from (
  select date_part('month',date) as dt,ice_id,tenki,quantity from
icesample
 ) as A group by A.dt,ice_id,tenki
) as B join pivsample as P on B.dt = P.month group by B.tenki;

以下結果

 tenki | m10 | m11 | m12
-------+-----+-----+-----
     1 | 115 |  16 |  62
     2 | 125 |  10 |   8
     3 |  10 |   6 |  70





PHP-users メーリングリストの案内