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

Намерете min и max за подмножества от последователни редове - пропуски и острови

Искате да намерите последователни групи от подобни редове и след това агрегиране. Харесва ми разликата в подхода към номерата на редовете:

select name, act, min(startt) as startt, max(endd) as endd
from (select i.*,
             row_number() over (partition by name, act order by rn) as seqnum_na,
             row_number() over (partition by name order by rn) as seqnum_n
      from input i
     ) i
group by (seqnum_n - seqnum_na), name, act;

Можете да видите как работи това, като погледнете какво прави подзаявката.



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

  2. Заобиколно решение за регулярен израз на SQL Server в T-SQL?

  3. Рамка за модулни тестове за бази данни

  4. Таблица в Excel от съхранена процедура на SQL Server с поле за параметри в работна книга

  5. SQL Server 2016:Дизайнер на заявки