• 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.