No fakt, že je potřeba vypočítat průměr pro každý hodinu, ve skutečnosti to zjednodušuje, protože stačí SUM
počet produktů a vydělte ho pevným číslem (24). Takže si myslím, že tím získáte požadované výsledky (i když v tomto konkrétním případě bude kurzor ve skutečnosti rychlejší):
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