• Here is another addition to the code, identifying the gaps more efficiently.

    😎

    USE TESTDB;

    GO

    ;WITH BASE_DATA AS

    (

    SELECT

    ST.STG_ID

    ,ST.[Description] AS SKU

    ,YK.rn - RANK() OVER

    (

    PARTITION BY Description

    ORDER BY WEEK

    ) AS WN_OFFSET

    ,YK.weekx

    ,YK.rn

    FROM dbo.staging ST

    INNER JOIN dbo.yearweek YK

    ON ST.[Week] = YK.weekx

    )

    ,GROUP_BOUNDRIES AS

    (

    SELECT

    BD.STG_ID

    ,BD.SKU

    ,ROW_NUMBER() OVER

    (

    PARTITION BY BD.SKU,BD.WN_OFFSET

    ORDER BY BD.rn ASC

    ) AS BD_WO_RID

    ,BD.WN_OFFSET

    ,BD.weekx

    ,BD.rn

    FROM BASE_DATA BD

    )

    ,GROUP_EDGES AS

    (

    SELECT

    GB.STG_ID

    ,ROW_NUMBER() OVER

    (

    ORDER BY GB.STG_ID

    ) AS GB_RID

    ,GB.SKU

    ,GB.BD_WO_RID

    ,GB.WN_OFFSET

    ,GB.weekx

    ,GB.rn

    FROM GROUP_BOUNDRIES GB

    -- COMMENT OUT THE WHERE STATEMENT

    -- TO RETRIEVE ALL RESULTS, THIS

    -- ONLY SHOWS THE EDGES

    WHERE GB.BD_WO_RID = 1

    )

    SELECT

    GE1.STG_ID

    ,GE1.GB_RID

    ,GE1.SKU

    ,GE1.WN_OFFSET

    ,GE2.WN_OFFSET - GE1.WN_OFFSET

    FROM GROUP_EDGES GE1

    LEFT OUTER JOIN GROUP_EDGES GE2

    ON GE1.GB_RID = GE2.GB_RID - 1

    AND GE1.SKU = GE2.SKU;