sql >> データベース >  >> RDS >> Oracle

OracleSQL-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. Objective-CのMySQLコマンド

    2. 私が選ぶべきもの-JSONまたはSQLite?

    3. PHPコードとHTMLフォームを使用してExcel(.csv)をMySQLにインポートします

    4. SQLは、列の最大値を持つ行のみを選択します