Tja, det faktum att du måste beräkna genomsnittet för varje timme, gör faktiskt detta enklare, eftersom du bara behöver SUM
produkträkningen och dividera den med ett fast tal (24). Så jag tror att detta kommer att få de resultat du vill ha (även om en markör i det här fallet faktiskt är snabbare):
SELECT A.*, B.ProductCount/24 DailyMovingAverage
FROM ProductInventory A
OUTER APPLY ( SELECT SUM(ProductCount) ProductCount
FROM ProductInventory
WHERE ProductName = A.ProductName
AND [Date] BETWEEN DATEADD(HOUR,-23,A.[Date]) AND A.[Date]) B