これは私の頭のすぐ上にあり、ドアから出ようとしているので、テストされていません。また、あらゆる種類の大規模なデータセットで非常にうまく機能することも想像できません。ただし、少なくともエラーなしで実行されることを確認しました。 :)
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