2005年02月25日

ゲンバで使ったSQL:縦並びデータを範囲集計して横並びに変換する

前回のバリエーション。

部署経費
3営業48
12研究開発260
5営業30
3岩手工場12
10広報125

というように続くテーブル(月ごと)を

部署第1四半期第2四半期第3四半期第4四半期
営業715528628476
研究開発127913681572983

というように続く部署ごとの四半期推移にするなら、
insert into 変換後
select 部署
sum( decode( 月,
least( greatest( 月, 1 ), 3 ),
経費, 0
) ) as 第1四半期,
sum( decode( 月,
least( greatest( 月, 4 ), 6 ),
経費, 0
) ) as 第2四半期,
sum( decode( 月,
least( greatest( 月, 7 ), 9 ),
経費, 0
) ) as 第3四半期,
sum( decode( 月,
least( greatest( 月,10 ),12 ),
経費, 0
) ) as 第4四半期,
from 変換前
group by 部署

縦並び状態で sum() をかけた一時テーブルを作る手もあるかも知れないけれど、まぁ状況により使い分けるってことで。
サンプルは不自然だけど、あくまでSQLのロジックを伝えるのが目的なんで勘弁して下さい。
posted by 市井賢児 at 2005年02月25日 02:22
| Comment(0) | TrackBack(0) | SQL


この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。