最も早いレコードを取得し、同じ基準を2回入力する必要をなくすには、いくつかの方法があります。
FETCH FIRST ROWSの使用(Oracle 12c以降で利用可能)
select *
from abc_customer_details cd
join abc_customers c on c.id = cd.customer_id
where cd.country_code = 'KE'
order by creation_timestamp
fetch first row only;
CTEの使用(WITH句)
with cte as
(
select *
from abc_customer_details cd
join abc_customers c on c.id = cd.customer_id
where cd.country_code = 'KE'
)
select *
from cte
where (creation_timestamp) = (select min(creation_timestamp) from cte);
ウィンドウ関数の使用
select *
from
(
select cd.*, c.*, min(creation_timestamp) over () as min_creation_timestamp
from abc_customer_details cd
join abc_customers c on c.id = cd.customer_id
where cd.country_code = 'KE'
)
where creation_timestamp = min_creation_timestamp;
(ちなみに、これらすべてのクエリで参加基準を変更しました。abc_customer_details.id = abc_customers.customer_id
で参加する可能性は非常に低いようです。 。)