• Here is a quick "translation" to play around with

    😎

    USE tempdb

    Go

    DECLARE @CHEST_COUNT INT = 1000;

    /* Seed for the Inline Tally */

    ;WITH TN(N) AS (SELECT N FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1)) AS X(N))

    SELECT

    ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ChestItemsID

    ,CHEST.N AS ChestID

    ,ITEM.N AS ItemID

    FROM

    (

    SELECT TOP (@CHEST_COUNT) ROW_NUMBER() OVER

    (ORDER BY (SELECT NULL)) AS N FROM TN T1, TN T2

    , TN T3, TN T4, TN T5, TN T6, TN T7, TN T8, TN T9

    ) AS CHEST

    CROSS APPLY

    (

    SELECT TOP ((ABS(CHECKSUM(NEWID())) % (CHEST.N * 2)) + 1) ROW_NUMBER() OVER

    (ORDER BY (SELECT NULL)) + 6000 AS N FROM TN T1, TN T2

    , TN T3, TN T4, TN T5, TN T6, TN T7, TN T8, TN T9

    ) AS ITEM;

    Result example

    ChestItemsID ChestID ItemID

    ------------- --------- -------

    1 1 6001

    2 2 6001

    3 2 6002

    4 2 6003

    5 2 6004

    6 3 6001

    7 4 6001

    8 4 6002

    9 4 6003

    10 4 6004

    11 4 6005

    12 4 6006

    13 4 6007