Nun, die Tatsache, dass Sie den Durchschnitt für jeden berechnen müssen Stunde, macht dies tatsächlich einfacher, da Sie nur SUM
müssen die Produktanzahl und teilen Sie sie durch eine feste Zahl (24). Ich denke also, dass dies die gewünschten Ergebnisse liefert (obwohl in diesem speziellen Fall ein Cursor tatsächlich schneller ist):
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