Обикновено постигате този тип неща чрез JOIN-ing с таблица със стойности , т.е. таблица, която съдържа всички стойности, които ви интересуват.
Типичните таблици със стойности могат да съдържат например всички цели числа между 0 и 1000 или всички дати за даден период. Често таблиците със стойности включват повече стойности от желаните и ние получаваме точния желан резултат чрез добавяне на филтри в клаузата WHERE.
В този случай ще ви е необходима такава таблица, която съдържа дати. Ако приемем, че тази таблица е наречена ValTableDates и че съдържа всички дати между януари 2005 г. и декември 2010 г., заявката ще изглежда така:
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
Горната заявка може да изисква малко коригиране, за да получите стойност нула, а не NULL, но основната точка е, че таблицата със стойности обикновено е най-простият начин за предоставяне на изходни записи за липсващи точки от данни.
Алтернатива е да използвате функция/израз, който произвежда желаната последователност [дата], вътре в подзаявка, но това обикновено е по-малко ефективно и по-податливо на грешки.