Поскольку каждый оператор SELECT действительно создает таблицу записей, вы можете использовать запрос SELECT для построения таблицы с количеством программ и счетчиком по умолчанию, равным нулю. Для этого потребуются два запроса SELECT (один для получения действительного числа, другой для получения значения по умолчанию) и использование UNION для объединения двух результатов SELECT в одну таблицу.
Оттуда вы можете ВЫБРАТЬ из таблицы UNIONed для суммирования CountVals (если в таблице ProgramTate встречается programDate, CountVal
CountVal первого запроса, если он существует (> 0) + CountVal второго запроса (= 0)).
Таким образом, даже если в ProgramTable нет записей для нужной ProgramDate, вы получите запись обратно с указанием счетчика 0.
Это будет выглядеть так:
SELECT ProgramDate, SUM(CountVal)
FROM
(SELECT ProgramDate, COUNT(*) AS CountVal
FROM ProgramsTbl
WHERE (Type = 'Type1' AND ProgramDate = '10/18/11' )
UNION
SELECT '10/18/11' AS ProgramDate, 0 AS CountVal) T1