sql >> Databáze >  >> RDS >> Sqlserver

Ostrůvky číslování v SQL Server 2012

Pokud je chcete pouze očíslovat, pak bych navrhl lag() s kumulativním součtem:

select t.*,
       sum(case when datefrom = dateadd(day, 1, prev_dateto
                then 0 else 1
           end) over (order by itemId, datefrom)
from (select t.*,
             lag(dateto) over (partition by itemid order by datefrom) as prev_dateto
      from table t
     ) t;

case určuje, kde začíná nový ostrov. Kumulativní součet pouze sečte tento příznak.



  1. Jak nainstalovat databázi Oracle na Windows

  2. Konverze časového pásma v dotazu SQL

  3. Závažná chyba:Třída 'TableRows' nebyla nalezena v

  4. java.sql.SQLException:Neplatná hodnota argumentu:java.io.NotSerializableException