- PR -

同一テーブルから日付の違うものの集計をとるには

1
投稿者投稿内容
kazurock
常連さん
会議室デビュー日: 2005/01/24
投稿数: 40
投稿日時: 2005-02-14 18:37
テーブルA
YMD |あいう|えお|かきく|
---------------------------------------------------------------
2004/01/01 |abc |aa |bb |
2004/01/01 |abc |a1 |bFF |
2004/01/01 |abc |aa |bb |
2004/01/01 |abc |a1 |bFF |
2004/01/02 |ab  |aa |bb |
2004/01/04 |ab2 |aa |bcc |
2004/01/02 |ab  |aa |bb |
2004/01/04 |ab2 |aa |bcc |
2004/01/06 |a11 |aa |bc |
2004/01/06 |a11 |aa |bc |
2004/01/06 |a11 |aa |bc |
2004/01/06 |a11 |aa |bc |
こういったテーブルから
テーブルB
YMD |あいう|えお|かきく|カウント|前年度YMDカウント
---------------------------------------------------------------
2004/01/01 |abc |aa |bb |10   |80
2004/01/01 |abc |a1 |bFF |2     |20
2004/01/02 |ab  |aa |bb |1   |40
2004/01/04 |ab2 |aa |bcc |5   |20
2004/01/06 |a11 |aa |bc |10   |30

                   ここにはちょうど一年前のカウントを入れる
項目すべてにおいてグループ化されているものとするSQLはどのようにしたらいいでしょうか??
テーブルA同士を結合して1年前の日付のものだったらカウントするみたいな方法のほうがいいでしょうか?できれば簡単なSQLをつけて説明していただければ幸いです。
どなたかよろしくお願いします。

[ メッセージ編集済み 編集者: kazurock 編集日時 2005-02-14 18:45 ]
ピゴナダ
会議室デビュー日: 2004/08/19
投稿数: 12
お住まい・勤務地: 東京都
投稿日時: 2005-02-14 21:35
こんな感じでどうでしょう?
今、時間が無いので詳細な説明は省略させてください。

create view tmpst_v as
select
YMD, あいう, えお, かきく, count(*) as カウント, add_months( YMD, -12 ) as 去年のYMD
from
テーブルA
group by
YMD, あいう, えお, かきく
;

select
a.YMD,
a.あいう,
a.えお,
a.かきく,
a.カウント,
nvl(b.カウント,0)
from
tmpst_v a
left outer join tmpst_v b on (
a.去年のYMD = b.YMD and
a.あいう = b.あいう and
a.えお = b.えお and
a.かきく = b.かきく
)
order by a.YMD;
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-10-10 14:42
相関サブクエリ
LAG
1

スキルアップ/キャリアアップ(JOB@IT)