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

Trường ngày tự động tăng dần và phiên bản oracle sql cho một bảng

Tôi nghĩ rằng logic của bạn bằng cách sử dụng mergerow_number() đang đi đúng hướng (mặc dù, có lẽ là phân vùng partition by mệnh đề không cần thiết, vì bạn đang lọc thành phố` rồi). Tôi đã mở rộng nó với logic bổ sung để xử lý ngày tháng:

  • effective_dt_from ban đầu và cuối cùng effective_dt_to nên được để nguyên

  • ở giữa, bạn muốn tăng ngày từng ngày bắt đầu từ '2017-01-01' .

Truy vấn:

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. Danh sách được phân tách bằng dấu phẩy

  2. Làm cách nào để nhập tệp XML trong Oracle SQL Developer?

  3. Sử dụng con trỏ tham chiếu Oracle trong Java mà không phụ thuộc Oracle

  4. Centos 6 PHP OCI8 mở rộng không hoạt động (Hàm không xác định oci_connect ())

  5. Kết nối PDO với cơ sở dữ liệu Oracle