Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Znajdź min i max dla podzbiorów kolejnych wierszy - przerw i wysp

Chcesz znaleźć kolejne grupy podobnych wierszy, a następnie agregować. Podoba mi się różnica w podejściu do numerów wierszy:

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;

Możesz zobaczyć, jak to działa, patrząc na to, co robi podzapytanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wersja serwera SQL 655

  2. SQL Server 2008 - Dodaj do ciągu w określonej pozycji w kolumnie nazwy

  3. SSRS 2008 — Jednolite legendy wykresów dla raportu z wieloma wykresami

  4. Uzyskaj aktualną strefę czasową serwera w programie SQL Server (T-SQL)

  5. Żądanie ROLLBACK TRANSACTION nie ma odpowiadającego BEGIN TRANSACTION