Thực tế là bạn cần tính giá trị trung bình cho mọi giờ, thực sự làm cho việc này đơn giản hơn, vì bạn chỉ cần SUM
sản phẩm đếm và chia nó cho một số cố định (24). Vì vậy, tôi nghĩ rằng điều này sẽ nhận được kết quả bạn muốn (mặc dù trong trường hợp cụ thể này, con trỏ thực sự nhanh hơn):
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