You can check this as well. Slightly improved version. Is n't it ?
DECLARE @test-2 TABLE
( VARCHAR(5), Period INT, Data VARCHAR(10))
INSERT INTO @test-2
SELECT 'A',5,'data'
UNION ALL SELECT 'A',6,'data'
UNION ALL SELECT 'A',8,'data'
;WITH CTE AS (
SELECT [Key], Period, Data, FirstPeriod=MIN(Period) OVER (partition by , n), LastPeriod=MAX(Period) OVER (partition by , n)
FROM (
SELECT , Period, Data, n=Period-ROW_NUMBER() OVER (PARTITION BY ORDER BY Period)
FROM @test-2) a
)
SELECT [Key], Period, Data, FirstPeriod, LastPeriod
FROM CTE a;
Thank you.