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

Bidang tanggal tambahan otomatis dan versi Oracle sql untuk tabel

Saya pikir logika Anda menggunakan merge dan row_number() berada di jalur yang benar (meskipun, mungkin, partition by klausa tidak diperlukan, karena Anda sudah memfilter di kota`). Saya memperluasnya dengan logika tambahan untuk menangani tanggal:

  • effective_dt_from awal dan effective_dt_to terakhir harus dibiarkan tak tersentuh

  • di antaranya, Anda ingin menambah tanggal hari demi hari mulai dari '2017-01-01' .

Pertanyaan:

merge into test t
using (
    select
        t.*,
        row_number() over(order by loc_sid asc) rn,
        count(*) over() cnt
    from test t
    where city = 'Chicago'
) t1
on (t1.loc_sid = t.loc_id)
when matched the update set
    t.version = t1.rn,
    t.effective_dt_from = 
        case 
            when rn = 1 then t.effective_dt_from
            else date '2017-01-01' + rn - 2
        end,
    t.effective_dt_to = 
        case 
            when rn = cnt then t.effective_dt_to
            else date '2017-01-01' + rn - 1
        end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuang Blok Data

  2. Pisahkan tabel menjadi kolom level yang berbeda

  3. Impor dump dengan parameter SQLFILE tidak mengembalikan data di dalam tabel

  4. Kerusakan tanggal Oracle selama pembaruan

  5. Integrasi ADF dengan EBS