Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL - DENSE_RANK

Както разбрах, това е, от което се нуждаете:

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. Получаване на секунди между две времеви марки на Oracle

  2. Как да повдигна повторно pl/sql изключение в блок за обработка на изключения?

  3. SQL заявка за получаване на отделни стойности на всички стойности на колони в таблица

  4. Spring StoredProcedure с масив Oracle:ORA-01000:превишени са максималните отворени курсори

  5. Oracle sql заявка за групиране на последователни записи по дата