add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table mytable (
[date] date,
unit varchar(20),
status int
);

insert into mytable values
('2023-04-30', 'unit1', 1),
('2023-05-31', 'unit1', 1),
('2023-08-31', 'unit1', 1),
('2023-09-30', 'unit1', 1),
('2023-10-31', 'unit1', 1),
('2023-11-30', 'unit1', 1),
('2023-12-30', 'unit1', 1),
('2024-01-30', 'unit1', 1);
8 rows affected
with cte as (
SELECT *, GroupingSet = FORMAT(DATEADD(
MONTH, - ROW_NUMBER() OVER(PARTITION BY unit ORDER BY [date]),
[date]
), 'yyyy-MM-01')
FROM mytable
WHERE [date] > EOMONTH('2023-05-15') AND [status] = 1
)
SELECT TOP 1 unit,
StartDate = MIN([date]),
EndDate = MAX([date]),
streak = COUNT(*)
FROM CTE
GROUP BY unit, GroupingSet
ORDER BY StartDate;
unit StartDate EndDate streak
unit1 2023-08-31 2024-01-30 6