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

Как да групирам по непрекъснати диапазони

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

Тази статия може да ви е от интерес:

  • Нещата, от които 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. Има ли комбинация от LIKE и IN в SQL?

  2. Какво има с (nolock) в SQL Server?

  3. 4 невероятни ресурси за наблюдение на SQL Server за администратори на бази данни

  4. какъв е проблемът с AttachDbFilename

  5. Как да настроите съпоставянето на база данни в SQL Server (T-SQL)