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

Menemukan kontrak terbaru untuk setiap akun

Gunakan ROW_NUMBER :

SELECT account, "date", "value"
FROM
(SELECT 
  account, "date", "value",
  ROW_NUMBER() OVER (PARTITION BY account ORDER BY "date" DESC) rn
 FROM yourTable
) t
WHERE rn=1;

Perhatikan bahwa jawaban yang sekarang dihapus yang diberikan oleh @NiVeR akan cukup jika kami hanya menginginkan tanggal maksimum untuk setiap akun. Jika kita juga membutuhkan nilai, atau secara umum kolom lain dari setiap record, maka kita harus melakukan join tambahan, atau menggunakan nomor baris seperti yang saya lakukan di atas.

Lihat Demo di SQL Fiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggulung ke file berformat CSV menggunakan SQLPLUS?

  2. jalankan kode sql oracle online

  3. Apakah Petunjuk Paralel dalam SQL Dinamis Oracle berjalan secara paralel?

  4. Kesalahan pekerjaan impor Sqoop org.kitesdk.data.ValidationException untuk Oracle

  5. Oracle:Dapatkan kueri untuk selalu mengembalikan tepat satu baris, bahkan ketika tidak ada data yang ditemukan