ええと、すべての平均を計算する必要があるという事実 SUM
するだけなので、実際にはこれが簡単になります。 製品数を数え、それを固定数で割ります(24)。したがって、これで希望する結果が得られると思います(ただし、この特定のケースでは、カーソルの方が実際には高速です):
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