Напрямую функционал чистого SQL такое, насколько я знаю, вряд ли сможет предоставить. Основная проблема в том, что нужно проверять соответствие числам месяца, которые в базе не существуют. Значит, их надо сгенерировать искусственно.
К варианту с циклом, где будет соответственно 30 селектов на каждое число, могу добавить вариант с одним (хоть и немного извращённым) запросом:
Получаем запросом цифры от 1 до 30, например селектом из любой таблицы, где есть столько записей (Предположим, что исходные данные все в таблице Tbl_Temp):
SELECT RowNum AS N FROM Tbl_Temp WHERE RowNum < 30
(синтаксис PLSQL, переделайте, если надо, на другой диалект)
После чего делаем LEFT JOIN на нужную таблицу по полю с числом месяца. В целом это будет примерно так:
SELECT A.N, B.sCOL, B.sSUM FROM
(SELECT RowNum AS N FROM Tbl_Temp WHERE RowNum < 30) A
LEFT JOIN
(SELECT DAY(Request.mDate) AS N,COUNT(Request.Id) AS sCOL, SUM(Request.SummAll) AS sSUM FROM Tbl_Temp
WHERE (Request.mDate BETWEEN '20121001' AND '20121101') ) B
ON A.N = B.N
ORDER BY A.N
Альтернатива операторам JOIN - конструкция CASE WHEN, с ней можно будет вместо NULL в конечном результате поставить любое значение.