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

Jak grupować według ciągłych zakresów?

WITH    q AS
        (
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY crew, dayType ORDER BY [date]) AS rnd,
                ROW_NUMBER() OVER (PARTITION BY crew ORDER BY [date]) AS rn
        FROM    mytable
        )
SELECT  MIN([date]), MAX([date]), crew AS name, dayType
FROM    q
GROUP BY
        crew, dayType, rnd - rn

Ten artykuł może Cię zainteresować:

  • Rzeczy, których potrzebuje SQL:SERIES()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wygenerować skrypty upuszczania unikalnych ograniczeń w bazie danych SQL Server — samouczek SQL Server / TSQL część 99

  2. Sprawdź, czy tabela ma DEFAULT ograniczenie w SQL Server za pomocą OBJECTPROPERTY()

  3. Najszybszy sposób na znalezienie przestarzałych funkcji, które są nadal używane w wystąpieniu programu SQL Server (przykład T-SQL)

  4. lista rozdzielana przecinkami jako pojedynczy ciąg, T-SQL

  5. Jak zwrócić ciąg w odwrotnej kolejności za pomocą SQL Server – REVERSE()