sql >> Databasteknik >  >> RDS >> Sqlserver

Numrering av öar i SQL Server 2012

Om du bara vill numrera dem skulle jag föreslå lag() med en ackumulerad summa:

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 bestämmer var en ny ö börjar. Den ackumulerade summan summerar bara denna flagga.



  1. Hur man tipsar om uppdateringslås utan att duplicera lagrad procedurkod

  2. Jag måste skicka kolumnnamn med variabel i select-satsen i Store Procedure men jag kan inte använda dynamisk fråga

  3. Inbäddad Postgres för Spring Boot Tests

  4. Hur hoppar man över kolumner i CSV-fil när man importerar till MySQL-tabell med LOAD DATA INFILE?