
こんにちはみなさん。
現在、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で質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CLOB型へのINSERT
-
アクセスの置き換えでスペース...
-
Oracle上のテーブルからCREATE ...
-
1つのテーブル・2つの列を結合...
-
複数テーブルのUPDATE
-
テーブル名を[]でくくらないと...
-
truncate文で全テーブルを一気...
-
SQLのあいまいマッチングを教え...
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
異なるスキーマからデータを抽...
-
Viewにインデックスは張れ...
-
DELETE文でFROM句を省略した場合
-
Data Pump で大量データインポ...
-
viewのバックアップ
-
datapumpの実行方法について
-
SQL*Loaderで、データを加工し...
-
テーブルからのselectにおいて...
-
特定のスキーマのテーブルを一...
-
postgreSQLのint型は桁数指定が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLOB型へのINSERT
-
truncate文で全テーブルを一気...
-
テーブル名を[]でくくらないと...
-
oracleのプライマリ・キー名の変更
-
Oracle複数の表をもとにmerge文...
-
1つのテーブル・2つの列を結合...
-
主キーが二つのテーブルのselec...
-
count(1)とcount(*)の違い
-
oracle sqlで先頭の1件を取得
-
Oracle上のテーブルからCREATE ...
-
Oracle テーブルの列削除
-
SQLのto_char関数の未定義エラー
-
SQL*Loaderをダイレクトモード...
-
グループの数を取得したい
-
あるデータベースの表を全部消...
-
sqlplusで実行したSQLの結果を...
-
インラインビューの更新権限に...
-
テーブル作成のサンプル
-
複数テーブルのUPDATE
-
ユーザー定義関数作成について...
おすすめ情報