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

Temukan tahun berturut-turut maksimum untuk setiap ID dalam tabel (Oracle SQL)

Ini akan menghasilkan hasil yang Anda inginkan:

select
  id,
  ayear,
  byear,
  yeardiff
from
(
  select
    a.id,
    a.year ayear,
    b.year byear,
    (b.year - a.year)+1 yeardiff,
    dense_rank() over (partition by a.id order by (b.year - a.year) desc) rank
  from
    years a
    join years b on a.id = b.id 
        and b.year > a.year
  where
    b.year - a.year = 
      (select count(*)-1
         from years a1
        where a.id = a1.id
             and a1.year between a.year and b.year)
)
where
  rank = 1

EDIT diperbarui untuk menampilkan tahun-tahun awal/akhir dari rentang terlama.

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan mencetak variabel REFCURSOR sebagai parameter OUT dalam prosedur di Oracle 11g

  2. Oracle Dinamis Pivot_In_Clause

  3. Menggunakan Parameter dengan Koneksi ODBC Oracle

  4. COSH() Fungsi di Oracle

  5. Bagaimana mengubah nls_date_format default untuk klien Oracle jdbc