Đây chỉ là điều tôi nghĩ, và tôi đang trên đường ra khỏi cửa, vì vậy nó chưa được kiểm tra. Tôi cũng không thể tưởng tượng rằng nó sẽ hoạt động rất tốt trên bất kỳ loại tập dữ liệu lớn nào. Tôi đã xác nhận rằng nó ít nhất chạy mà không có lỗi. :)
SELECT
value_column1,
(
SELECT
AVG(value_column1) AS moving_average
FROM
Table1 T2
WHERE
(
SELECT
COUNT(*)
FROM
Table1 T3
WHERE
date_column1 BETWEEN T2.date_column1 AND T1.date_column1
) BETWEEN 1 AND 20
)
FROM
Table1 T1