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