Welnu, het feit dat u het gemiddelde moet berekenen voor elke uur, maakt dit eigenlijk eenvoudiger, omdat je alleen maar hoeft te SUM
het aantal producten en deel dit door een vast getal (24). Dus ik denk dat dit de gewenste resultaten zal opleveren (hoewel in dit specifieke geval een cursor eigenlijk sneller is):
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