DECLARE @Test TABLE ([KEY] VARCHAR(5), Period INT, Data VARCHAR(10))INSERT INTO @TestSELECT 'A',5,'data'UNION ALL SELECT 'A',6,'data'UNION ALL SELECT 'A',8,'data';WITH CTE AS ( SELECT [Key], FirstPeriod=MIN(Period), LastPeriod=MAX(Period) FROM ( SELECT [KEY], Period, Data ,n=Period-ROW_NUMBER() OVER (PARTITION BY [KEY] ORDER BY Period) FROM @Test) a GROUP BY [Key], n)SELECT b.[KEY], Period, Data, FirstPeriod, LastPeriodFROM CTE aINNER JOIN @Test b ON a.[KEY] = b.[KEY] AND b.Period BETWEEN FirstPeriod AND LastPeriod
INSERT INTO @TestSELECT 'A',5,'data'UNION ALL SELECT 'A',6,'data'UNION ALL SELECT 'A',6,'other data'UNION ALL SELECT 'A',8,'data'