Как написать этот запрос на mssql

У меня на табле есть такие данные

Date       - число 
01.07.2020 - 1
02.07.2020 - 1
05.07.2020 - 2
06.07.2020 - 2
07.07.2020 - 2
10.07.2020 - 1
11.07.2020 - 1
14.07.2020 - 3
17.07.2020 - 1
18.07.2020 - 1
19.07.2020 - 1
23.07.2020 - 1
24.07.2020 - 1

Какой select должен быть что на результате вила такая

01.07.2020 - старт 02.07.2020 - энд
05.07.2020 - старт 07.07.2020 - энд
10.07.2020 - старт 11.07.2020 - энд
14.07.2020 - старт 14.07.2020 - энд
17.07.2020 - старт 24.07.2020 - энд

Ответы (1 шт):

Автор решения: Akina
WITH 
cte AS (SELECT dt,
               num,
               ROW_NUMBER() OVER (ORDER BY dt) rn1,
               ROW_NUMBER() OVER (PARTITION BY num ORDER BY dt) rn2
        FROM test)
SELECT DISTINCT
       MIN(dt) OVER (PARTITION BY rn1 - rn2) start,
       MAX(dt) OVER (PARTITION BY rn1 - rn2) finish
FROM cte
ORDER BY start;

fiddle

→ Ссылка