sql >> Database teknologi >  >> RDS >> Sqlserver

Nummerering af øer i SQL Server 2012

Hvis du bare vil nummerere dem, så vil jeg foreslå lag() med en kumulativ sum:

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 bestemmer, hvor en ny ø begynder. Den kumulative sum summerer blot dette flag.



  1. Lagringsgrænser for MySQL brugerdefinerede variabler

  2. Tabelopslag i SortCL-kompatible IRI-job

  3. MySQL Performance Tuning Tips til at optimere databasen

  4. Hvordan kan jeg forespørge en MySQL-database fra en Rails-app uden modeller?