sql >> Database >  >> RDS >> Oracle

Aggregatiefunctie gebruiken om records te filteren op basis van MIN-tijdstempel

Er zijn verschillende manieren om het vroegste record te krijgen en te voorkomen dat u dezelfde criteria twee keer moet typen.

FETCH FIRST ROWS gebruiken (beschikbaar vanaf 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;

Een CTE gebruiken (WITH-clausule)

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);

Vensterfuncties gebruiken

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;

(Trouwens, ik heb de deelnamecriteria in al deze zoekopdrachten gewijzigd. Het lijkt uiterst onwaarschijnlijk dat je wilt deelnemen op abc_customer_details.id = abc_customers.customer_id .)



  1. Hoe verander ik alle lege strings in NULL in een tabel?

  2. Magento sql-queryhulp nodig bij massale query

  3. Kies uit de ene tafel waar niet in een andere

  4. Voeg dagen toe aan een datum in SQLite