У вас должны быть данные на эту дату, иначе sql не сможет их получить.
Наиболее распространенным способом решения этой проблемы является наличие таблицы дат, которая содержит ВСЕ даты. Тогда вы можете присоединиться к этому, что позволит вам получить нулевую запись на эту дату.
Вы можете либо сохранить эту таблицу в своей БД на постоянной основе, либо сгенерировать ее при выполнении запроса. Какой способ лучше всего зависит от использования и т. Д.
РЕДАКТИРОВАТЬ: метод CTE для создания таблицы дат
DECLARE @minDate DATETIME;
DECLARE @maxDate DATETIME;
SET @minDate = '2010-03-01 00:00:00.000';
SET @maxDate = '2010-03-10 00:00:00.000';
WITH DateRange ([date])
AS
(
SELECT @minDate
UNION ALL
SELECT
DATEADD(DAY, 1, [date])
FROM
DateRange
WHERE
DATEADD(DAY, 1, [date]) <= @maxDate
)
SELECT
*
FROM
DateRange
РЕДАКТИРОВАТЬ 2: Я не проверил это, но он должен работать с вашей базой данных.
DECLARE @day DATETIME
SET @day = CAST(FLOOR(CAST(GETDATE() AS float)) AS DATETIME);
WITH DateRange ([Date])
AS
(
SELECT @day
UNION ALL
SELECT
DATEADD(DAY, 1, [Date])
FROM
DateRange
WHERE
DATEADD(DAY, 1, [Date]) <= DATEADD(DAY, 5, @day)
)
SELECT
A.USUS_ID as Processor,
DateRange.[Date] as Date,
COUNT(A.CLCL_ID) as DailyTotal
FROM
CMC_CLST_STATUS A
INNER JOIN
DateRange
ON
A.CLST_STS_DTM >= DateRange.[Date]
AND
A.CLST_STS_DTM < DATEADD(DAY, 1, DateRange.[Date])
GROUP BY
A.USUS_ID,
DateRange.[Date]
ORDER BY
A.USUS_ID,
DateRange.[Date]