Не са необходими присъединявания или рекурсивни 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)