sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL - DENSE_RANK

Som jag förstod är detta vad du behöver:

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. Begränsa sammanfogningen till en rad

  2. Alla kolumner i tabellen bör indexeras eller inte mysql databas?

  3. Hur kan jag tilldela infogat utdatavärde till en variabel i sql-servern?

  4. ORA-00942:Kan man välja från schema.table men inte tabell?