sql >> Databasteknik >  >> RDS >> Sqlserver

Hur grupperar jag på kontinuerliga intervall

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

Den här artikeln kan vara av intresse för dig:

  • Saker SQL behöver:SERIES()


  1. returnera resultat från funktion

  2. Hur hittar man liknande resultat och sorterar efter likhet?

  3. Optimerad SQL för trädstrukturer

  4. Pivot med flera kolumner i T-SQL