Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на функция за агрегиране за филтриране на запис въз основа на MIN времево клеймо

Има няколко начина да получите най-ранния запис и да избегнете необходимостта да въвеждате едни и същи критерии два пъти.

Използване на 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 .)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите отметната стойност от Treeview в c#?

  2. Как да изберете записи с максимални стойности в две колони?

  3. Как да планирате Oracle DBMS Jobs в прозорец

  4. Не може да се използва DROP TABLE IF EXISTS в schema.sql за приложение за Spring Boot

  5. Как да извикате функция или процедура на Oracle с помощта на Hibernate (EntityManager) или JPA