Я использую следующий запрос в линейной диаграмме ssrs. Он подсчитывает, сколько заказов записывается каждый месяц на основе каждой даты заказа.Обработка несуществующих значений в выражении запроса sql для диаграммы ssrs
Моя проблема заключается в том, что, когда у месяца нет заказов, вместо того, чтобы указывать нуль или нуль, он удаляет строку для этого месяца все вместе. Я бы предпочел, чтобы он считал его нулевым, но null тоже было бы в порядке.
В принципе, я хочу, чтобы всегда иметь двенадцать строк, независимо от того, содержит ли они информацию или нет.
Как это исправить? Есть ли выражение, которое я могу использовать или что-то еще? Или я пропущу что-то совершенно очевидное?
SELECT
MONTH(Ord.OrdDate) AS 'MONTH',
COUNT(CASE WHEN @Worker_ID1 IS NULL OR @Worker_ID1 = Worker.ID THEN 1 END) AS 'Worker1',
COUNT(CASE WHEN @Worker_ID2 IS NULL OR @Worker_ID2 = Worker.ID THEN 1 END) AS 'Worker2',
COUNT(CASE WHEN @Worker_ID3 IS NULL OR @Worker_ID3 = Worker.ID THEN 1 END) AS 'Worker3',
COUNT(CASE WHEN @Worker_ID4 IS NULL OR @Worker_ID4 = Worker.ID THEN 1 END) AS 'Worker4',
COUNT(CASE WHEN @Worker_ID5 IS NULL OR @Worker_ID5 = Worker.ID THEN 1 END) AS 'Worker5'
FROM Ord
JOIN Prod ON Ord.Prod_ID = Prod.ID
JOIN ProdType ON Prod.ProdType_ID = ProdType.ID
JOIN Grouping ON Ord.Grouping_ID = Grouping.ID
JOIN Worker ON Grouping.Worker_ID = Worker.ID
WHERE @Year = YEAR(Ord.OrdDate)
AND (@ProdType_ID IS NULL OR @ProdType_ID = ProdType.ID)
GROUP BY MONTH(Ord.OrdDate)
Это не совсем ответ, поэтому я использую комментарий. Вы можете рассмотреть группировку по MONTH (Ord.OrdDate) и Worker.ID, а затем используя сводную таблицу, предоставленную ssrs-2008 (отчет о матрице, если я правильно напомню.) Вы можете изменить свой предикат, чтобы сказать AND Worker.ID IN (\ @ Worker_ID1, \ @ Worker_ID2, \ @ Worker_ID3, \ @ Worker_ID4, \ @ Worker_ID5). Если любой из них равен NULL, они неявно исключаются из предложения IN. – Griffin