Это типичная проблема пробелов и островов, когда требуется оглянуться назад на раздел. Один из способов сделать это заключается в следующем:
DECLARE @T TABLE(ReportDate DATETIME, EventType INT, AccountNumber INT)
INSERT @T VALUES
('1/1/2017',2,2),
('1/2/2017',2,2),
('1/3/2017',2,2),
('1/4/2017',1,4),
('1/5/2017',1,5),
('1/6/2017',2,6),
('1/8/2017',2,7),
('1/11/2017',2,5)
;WITH Markers AS
(
SELECT
*,
VirtualGroupID = SUM(IsNewGroup) OVER (ORDER BY ReportDate)
FROM
(
SELECT
EventType, AccountNumber,
ReportDate,
IsNewGroup = CASE WHEN ISNULL(LAG(EventType) OVER (ORDER BY ReportDate),EventType)<>EventType THEN 1 ELSE 0 END
FROM
@T d
)AS X
)
SELECT
EventType= MAX(EventType),
ReportDate = MIN(ReportDate),
MReportDate = MAX(ReportDate)
FROM
Markers
GROUP BY
VirtualGroupID