Ну, вы можете создать в своей программе предложение VALUES
с интересующими днями. Затем осталось присоединиться к столу и агрегировать, чтобы получить сумму. Вернувшись в свое приложение, вы можете итерировать день результата за день.
SELECT d.day,
coalesce(sum(t.qta)) qta
FROM (VALUES ('20190101'),
('20190102'),
...) d (day)
LEFT JOIN table1 t
ON t.id = 35
AND d.day BETWEEN t.date1
AND t.date2
GROUP BY d.day
ORDER BY d.day;
Другим вариантом может быть использование рекурсивного CTE для генерации дней из минимума и максимума, а затем для этого объединения, снова агрегируя для получения сумм.
WITH
d (day)
AS
(
SELECT convert(date, '20190101') day
UNION ALL
SELECT dateadd(day, 1, day)
FROM d
WHERE dateadd(day, 1, day) <= convert(date, '20190131')
)
SELECT d.day,
coalesce(sum(t.qta)) qta
FROM d
LEFT JOIN table1 t
ON t.id = 35
AND d.day BETWEEN t.date1
AND t.date2
GROUP BY d.day
ORDER BY d.day;