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

Откриване на последователни диапазони от дати с помощта на SQL

Не са необходими присъединявания или рекурсивни CTE. Стандартното решение за пропуски и острови е групирането по (стойност минус номер_ред), тъй като това е инвариантно в рамките на последователна последователност. Началната и крайната дата са само MIN() и MAX() на групата.

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви са някои начини за достъп до Microsoft SQL Server от Linux?

  2. Ограничения на SQL Server Express

  3. SQL замества всички NULL

  4. Именуван екземпляр на SQL Server с проект на Visual Studio 2017 Installer

  5. Поправете съобщение 8117 „Операнд типът данни varchar е невалиден за оператор сума“ в SQL Server