一回も披露したことのない豆知識

ORACLE & SQL初心者です。
うまい日本語がみつからないのですが、
テーブルAは年月が月ごとに入っていて、
テーブルBには特定の年月しか入っていない状態だとします。
以下のような状況のときに、SQLではどのような表現を
用いるのが正しいのでしょうか?それとも条件?がたりないのでしょうか?

【テーブルA】

+----------+------------+
|  年月 | 店名   |
+----------+------------+
| 200901 | 八百八  |
+----------+------------+
| 200902 | 八百八  |
+----------+------------+
| 200903 | 八百八  |
+----------+------------+
| 200904 | 八百八本店|
+----------+------------+
| 200905 | 八百八本店|
+----------+------------+
| 200906 | 八百八本店|
+----------+------------+
| 200907 | 八百八本店|
+----------+------------+

【テーブルB】

+----------+----------+--------+
| 年月  | 品名  | 個数 |
+----------+----------+--------+
| 200901 | みかん | 6  |
+----------+----------+--------+
| 200905 | みかん | 3  |
+----------+----------+--------+

【結合後】

+----------+------------+----------+--------+
|  年月 | 店名   | 品名  | 個数 |
+----------+------------+----------+--------+
| 200901 | 八百八  | みかん | 6  |
+----------+------------+----------+--------+
| 200902 | 八百八  | みかん | 6  |
+----------+------------+----------+--------+
| 200903 | 八百八  | みかん | 6  |
+----------+------------+----------+--------+
| 200904 | 八百八本店| みかん | 6  |
+----------+------------+----------+--------+
| 200905 | 八百八本店| みかん | 3  |
+----------+------------+----------+--------+
| 200906 | 八百八本店| みかん | 3  |
+----------+------------+----------+--------+
| 200907 | 八百八本店| みかん | 3  |
+----------+------------+----------+--------+

・・よろしくお願いいたします。

A 回答 (1件)

分析関数は使えるなら、こんな感じで。


select 年月,店名,品名,個数
from TBLA a,
(select 年月 開始年月,lead(年月,1,999999) over(order by 年月) 改定年月,品名,個数 from TBLB) b
where a.年月>=b.開始年月(+) and a.年月<b.改定年月(+);
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_n様

ありがとうございます!!
ご指摘の方法でどうやらイメージ通りに
なりそうな感じです。

分析関数についても確認させていただきます。
ありがとうございました!!

お礼日時:2009/06/16 19:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!