TSQL - Get value between dates in data warehouse dimension

I have the beginnngs of a data warehouse, that contains (among other tables)

  • date table with 200 years worth of dates to join with, so no need to build a "dynamic" date table
  • dbo.Dim_Items (see below)
ItemNumber QOH EffectiveDate ExpirationDate IsCurrentRecord
372620 24 2021-12-11 05:34:09.000 9999-12-31 00:00:00.000 1
372620 11 2021-12-09 05:34:11.000 2021-12-11 05:34:09.000 0
372620 9 2021-12-07 05:34:20.000 2021-12-09 05:34:11.000 0

I would like to find the QOH for each day between 2021-12-07 and today (assume 2021-12-13, for brevity), so that my result looks like this

Date ItemNumber QOH
2021-12-07 372620 9
2021-12-08 372620 9
2021-12-09 372620 11
2021-12-10 372620 11
2021-12-11 372620 24
2021-12-12 372620 24
2021-12-13 372620 24

The closest I have come is the query below, but it is not working the way I want it to (note the zeros on dates that don't line up with the Items dimension)

DECLARE @START_DATE date,
        @END_DATE date

SET @START_DATE = '20211207'
SET @END_DATE = GETDATE()   -- '20211213'

SELECT CAL.TheDate,
        I.ItemNumber,
        I.QOH
FROM dbo.Dim_Calendar CAL
    LEFT OUTER JOIN dbo.Dim_Items I ON CAL.TheDate >= CAST(I.EffectiveDate as date)
        AND CAL.TheDate <= CAST(I.EffectiveDate as date)
        AND I.ItemNumber = 372620
WHERE CAL.TheDate >= @START_DATE
    AND CAL.TheDate <= @END_DATE
ORDER BY CAL.TheDate,
            I.ItemNumber
        
        
Date ItemNumber QOH
2021-12-07 372620 9
2021-12-08 372620 0
2021-12-09 372620 11
2021-12-10 372620 0
2021-12-11 372620 24
2021-12-12 372620 0
2021-12-13 372620 0

I am new to data warehousing as a whole, so I am not sure how to build this query correctly.


DBFIDDLE

DECLARE @START_DATE date,
        @END_DATE date

SET @START_DATE = '20211207'
SET @END_DATE = GETDATE()   -- '20211213'

SELECT
   TheDate,
   I.Itemnumber,
   I.QOH
FROM dbo.Dim_Calendar CAL
LEFT JOIN dbo.Dim_Items I On CAL.TheDate BETWEEN CAST(I.EffectiveDate as DATE) 
                                             AND I.ExpirationDate
                         AND I.Itemnumber = 372620
WHERE CAL.TheDate >= @START_DATE
    AND CAL.TheDate <= @END_DATE
ORDER BY CAL.TheDate,
            I.ItemNumber