
こんにちはみなさん。
現在、Oracle10gR2を使用しています。
そこで、以下のようなテーブルが存在します。
table_A(明細テーブル)
denday | cd | suu | kingaku
2011/03/05 | 1| 1| 1000
2011/03/10 | 1| 2| 2000
table_B(マスタ)
cd| henkoday | nm
1 | 2011/03/01| testA
1 | 2011/03/02| testB
1 | 2011/03/06| testC
上記マスタはcd、henkodayで管理しています。
上記table_Aとtable_Bを結合したいと思います。
そこで
select
t1.* ,t2.*
from
(select * from table_A order by denday) t1,
(select * from table_B order by cd,henkoday desc) t2
where
t1.cd=t2.cd
and t1.denday>=t2.henkoday
とした場合、マスタの3件分、明細データの重複ができてしまいます。
それを、直近の該当マスタのみ参照したいのですが、
以下のようなデータ抽出
table_A(明細テーブル) table_B(マスタ)
denday | cd | suu | kingaku | cd | henkoday | nm
2011/03/05 | 1 | 1 | 1000 | 1 | 2011/03/02 | testB
2011/03/10 | 1 | 2 | 2000 | 1 | 2011/03/03 | testC
そのSQLがわかりません。
どうかよろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんなかんじでどうでしょうか。
select cd,denday,suu,kingaku,t2cd,henkoday,nm
from(
select
t1.*,t2.cd t2cd,t2.henkoday,t2.nm
,row_number() over(partition by t1.cd,t1.denday order by t2.henkoday desc)rnum
from table_A t1
inner join table_b t2 on (t1.cd = t2.cd and t1.denday >= t2.henkoday))
where rnum = 1;
とか
select t1.*,t2.*
from table_A t1
inner join table_b t2 on (t1.cd = t2.cd and t1.denday >= t2.henkoday)
where t2.henkoday = (
select max(henkoday) from table_B t3
where t1.cd = t3.cd
and t1.denday >= t3.henkoday);
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
棒読みちゃんが起動できないの...
-
子供向けプログラミングのスク...
-
osqleditについて
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
-
オラクルゴールドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLOB型へのINSERT
-
テーブル名を[]でくくらないと...
-
truncate文で全テーブルを一気...
-
Oracle複数の表をもとにmerge文...
-
SQL*Loaderをダイレクトモード...
-
主キーが二つのテーブルのselec...
-
oracleのプライマリ・キー名の変更
-
oracle sqlで先頭の1件を取得
-
count(1)とcount(*)の違い
-
Oracle上のテーブルからCREATE ...
-
グループの数を取得したい
-
Oracle テーブルの列削除
-
プライマリーキーの追加
-
1つのテーブル・2つの列を結合...
-
SQLのto_char関数の未定義エラー
-
複数テーブルのUPDATE
-
あるデータベースの表を全部消...
-
DBに新しいTBLを作成した際の初...
-
sqlplusで実行したSQLの結果を...
-
Oracle9i v$sysstatの解釈
おすすめ情報