Ini hanya dari atas kepala saya, dan saya di jalan keluar pintu, jadi belum teruji. Saya juga tidak dapat membayangkan bahwa itu akan bekerja dengan sangat baik pada semua jenis kumpulan data besar. Saya memang mengkonfirmasi bahwa itu setidaknya berjalan tanpa kesalahan. :)
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