私はOracleテーブルTを持っています。そこには開始日の異なる複数のレコードがあります。私はcol1、col2、col3の同じ組み合わせの中で最も偉大な日付のものを保つために、すべてを削除したいと思います。この例では、1月31日に日付を保持し、残りの2つを削除したいと考えています。別のステージングテーブルを作成せずに単一のクエリでこれを実現するには、どうすればよいでしょうか?最も近い日付に基づいてOracleテーブルにレコードを保持する方法
テストスクリプト - それはCOL1の同じ組み合わせを持つ日付の最も大きいので、
上記のデータに基づいてcreate table t
(col1 number(10)
,col2 number(10)
,col3 number(10)
,col4 number(10)
,col5 date
);
insert into t values (15731,467,4087,14427,'09-Apr-17');
insert into t values (15731,467,4087,17828,'31-May-17');
insert into t values (15731,467,4087,15499,'16-Apr-17');
commit;
select * from t;[enter image description here][1]
、私は日が31月-17であるレコードのみを維持したいと思います、col2、col3を削除し、残りの2つをテーブルから削除します。上記のような他の数百万ものレコードがこの表にあることに注意してください。 これはあまりにも純粋なOracleの専門家の質問ですが、私は非常に新しいこの場所でOracleデータベースの私の手を試してみて謝罪します。
複数のレコードを同じ時間間隔でどのようにつなぎますか? –
これはまさに私が実現する挑戦であると気づいたことです - 時間のずれが同じであれば?簡単にするために、col1、col2、col3の同じキーを持つ古い日付を削除し、そのキーコンボの日付のうち最大のものを持つレコードを保持するという基準を変更しました。指摘ありがとう! – Brendon
あなたの説明を変更して、結びつきの仕方を明確にしてください。このような事例を説明するために、喜んで例を挙げましょう。 – miracle173