これは私が持っているクエリのより単純なバージョンです。
Alias1 as
(select distinct ID, file_tag, status, creation_date from tables where creation_dt >= sysdate and creation_dt <= sysdate + 1),
Alias2 as
(select distinct ID, file_tag, status, creation_date from same tables creation_dt >= sysdate and creation_dt <= sysdate + 1)
select distinct Alias1.ID ID_1,
Alias2.ID ID_2,
Alias1.file_tag,
Alias1.creation_date in_dt1,
Alias2.creation_date in_dt2
from Alias1, Alias2
where Alias1.file_tag = Alias2.file_tag
and Alias1.ID != Alias2.ID
order by Alias1.creation_dt desc
これは結果の例です。これらは両方とも同じですが、値が反転しています。
ID_1 ID_2 File_Tag in_dt1 in_dt2
70 66 Apples 6/25/2012 3:06 6/25/2012 2:53:47 PM
66 70 Apples 6/25/2012 2:53 6/25/2012 3:06:18 PM
クエリの目的は、一致するファイルタグを持つ複数のIDを検索し、その日の早い時間に送信されたIDに対して処理を実行することです(クエリは毎日実行され、その特定の日からの複製のみが必要です)。私はまだSQL/Oracleに比較的慣れていないので、この問題に取り組むためのより良い方法があるかどうか疑問に思います。