Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Номериращи острови в SQL Server 2012

Ако искате просто да ги номерирате, тогава бих предложил lag() с кумулативна сума:

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 определя къде започва нов остров. Кумулативната сума просто сумира този флаг.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неправилен синтаксис близо до ''

  2. ExecuteReader:Свойството на връзката не е инициализирано

  3. Има ли начин да посочите името на таблицата като низ?

  4. SharePoint 2010 - Промяна от Kerberos към удостоверяване на базата на твърдения

  5. Как мога да деактивирам таблицата за актуализиране за всички потребители