Anda biasanya mencapai hal semacam ini dengan BERGABUNG dengan tabel nilai , yaitu tabel yang berisi semua nilai yang Anda minati.
Tabel nilai tipikal dapat berisi misalnya semua nilai integer antara 0 dan 1.000, atau semua tanggal untuk periode tertentu. Seringkali tabel Nilai menyertakan lebih banyak nilai daripada yang diinginkan, dan kita memperoleh keluaran persis yang diinginkan dengan menambahkan filter dalam klausa WHERE.
Dalam hal ini Anda akan memerlukan tabel yang berisi tanggal. Dengan asumsi tabel ini bernama ValTableDates dan berisi semua tanggal antara Januari 2005 dan Desember 2010, kueri akan terlihat seperti:
SELECT AVG(data) AS data, VT.ValDate
FROM ValTableDates VT
LEFT JOIN table T ON T.dateReg = VT.ValDate
WHERE VT.ValDate > [Some Start Date] and VT < [Some End Date]
GROUP BY YEAR(dateReg), MONTH(dateReg), DAY(dateReg)
ORDER BY dateReg
Kueri di atas mungkin memerlukan sedikit penyesuaian untuk mendapatkan nilai Nol daripada NULL, tetapi poin utamanya adalah bahwa Tabel Nilai biasanya merupakan cara paling sederhana untuk menyediakan catatan keluaran untuk titik data yang hilang.
Alternatifnya adalah menggunakan fungsi/ekspresi yang menghasilkan urutan [tanggal] yang diinginkan, di dalam subkueri, tetapi ini umumnya kurang efisien dan lebih rawan kesalahan.