Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle untuk mengambil catatan maksimum

Anda dapat menggunakan subquery yang mendapatkan max(process_date) :

select c1.b_id,
  c2.MaxDate
from table_a a
inner join table_b b
  on a.a_id = b.a_id
inner join table_c c1
  on b.b_id = c1.b_id
inner join
(
  select max(process_date) MaxDate
  from table_c
) c2
  on c1.process_date = c2.maxdate;

Lihat SQL Fiddle dengan Demo

Atau Anda dapat menggunakan row_number() :

select b_id, process_date
from 
(
  select c1.b_id,
    c1.process_date,
    row_number() over(partition by a.a_id order by c1.process_date desc) rn
  from table_a a
  inner join table_b b
    on a.a_id = b.a_id
  inner join table_c c1
    on b.b_id = c1.b_id
) 
where rn = 1

Lihat SQL Fiddle dengan Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin untuk merujuk ke string pengganti ke-10 dan selanjutnya di regexp_replace Oracle?

  2. Penggunaan variabel pengikat Oracle dengan LIKE di C#

  3. Bagaimana cara menggabungkan dua tabel untuk mendapatkan hasil berikut?

  4. masalah hibernasi oracle10g

  5. Apakah ada fungsi nvl() di Ruby atau apakah saya harus menulisnya sendiri?