Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sử dụng chức năng tổng hợp để lọc bản ghi dựa trên dấu thời gian MIN

Có một số cách để có được bản ghi sớm nhất và tránh phải nhập hai lần cùng một tiêu chí.

Sử dụng TÌM KIẾM ROWS ĐẦU TIÊN (khả dụng với 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;

Sử dụng CTE (mệnh đề VỚI)

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

Sử dụng các chức năng cửa sổ

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;

(Nhân tiện, tôi đã thay đổi tiêu chí tham gia trong tất cả các truy vấn này. Có vẻ như bạn không muốn tham gia trên 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. SQL:nhận giá trị tối đa của một cột và các cột khác tương ứng

  2. Đọc dấu thời gian khi nhập dữ liệu trong SQL Developer

  3. java.sql.SQLException:Exhausted Resultset

  4. Số lượt chọn (1) từ tên_bảng trên bất kỳ bảng cơ sở dữ liệu nào có nghĩa là gì?

  5. chọn hàng thứ 2 trong Plsql