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

Oracle SQL - DENSE_RANK

Như tôi đã hiểu, đây là những gì bạn cần:

select client_ID, status_id, from_date, to_date, 
       sum(start_of_group) over (order by client_ID, from_date) + 1 rank
  from (SELECT c.client_ID, c.status_id, c.from_date, c.to_date,
               case when lag(c.client_ID, 1, c.client_ID) over (order by c.client_ID, c.from_date) = c.client_ID 
                     and lag(c.status_id, 1, c.status_id) over (order by c.client_ID, c.from_date) = c.status_id
                    then 0 else 1 end start_of_group
          FROM client c)
 order by client_ID, from_date

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. Làm thế nào để lưu trữ kết quả của một hàm sẽ trả về sysrefcursor?

  2. Phiên bản SQL Server của Oracle's ADD_MONTHS ()

  3. Bắt đầu với Oracle Application Express-APEX

  4. Lỗi kết nối ODBC Oracle (sử dụng trình điều khiển ODBC có sẵn của oracle)

  5. tạo bảng với công đoàn chọn không có ràng buộc