У меня есть диаграмма столбцов SSRS с двумя группами категорий для оси x, которые сортируют данные по первому году, за которым следует дата. У меня также есть параметр на графике, в котором конечный пользователь может выбрать месяц, в котором они хотят видеть данные, а на диаграмме отображаются данные, относящиеся к этому месяцу. То, что я пытаюсь сделать, - это показать диаграмму столбцы на все месяцы, даже если в течение этого месяца нет информации (в идеале, я хотел бы, чтобы в течение месяца отображалось 0, нет данных), а не только месяцы, которые имеют данные на основе фильтра. Это запрос, у меня есть в моем наборе:Показывать месяцы в таблице столбцов Нет данных
SELECT COUNT(c.statecodename) AS codename,
c.statecodename,
DATENAME(mm, c.expireson) AS Month,
DATENAME(yyyy, c.expireson) AS Year,
DATEPART(yyyy, c.expireson) AS YearNum,
DATEPART(m, c.expireson) AS MonthNum
FROM Table1 AS c
WHERE (c.expireson IS NOT NULL)
AND (DATENAME(mm, c.modifiedon) IN (@ReportParameter1))
GROUP BY DATENAME(mm, c.expireson),
DATENAME(yyyy, c.expireson),
DATEPART(yyyy, c.expireson),
DATEPART(m, c.expireson),
c.statecodename
UNION ALL
SELECT COUNT(d.statecodename) AS codename,
d.statecodename collate DATABASE_DEFAULT,
DATENAME(mm, d.expireson) AS Month,
DATENAME(yyyy, d.expireson) AS Year,
DATEPART(yyyy, d.expireson) AS YearNum,
DATEPART(m, d.expireson) AS MonthNum
FROM Table2 AS d
WHERE (d.expireson IS NOT NULL)
AND (DATENAME(mm, d.modifiedon) IN (@ReportParameter1))
GROUP BY DATENAME(mm, d.expireson),
DATENAME(yyyy, d.expireson),
DATEPART(yyyy, d.expireson),
DATEPART(m, d.expireson),
d.statecodename
ORDER BY YearNum, MonthNum
Есть ли способ, в котором я могу присвоить нулевые значения в остальные месяцы, так что они показывают, как, например, в диаграмме колонке? До сих пор я пытался создать набор данных, который извлекал все месяцы, и использовал выражение поиска для параметра my month, но это ничего не делало. Я также попытался проверить мое предложение WHERE для DATENAME (mm, c.expireson) IS NULL, но это также не сработало. Может ли кто-нибудь предложить мне подход к тому, как это сделать? Заранее спасибо!
Здравствуйте, я попытался реализовать этот код для создания временной таблицы. Однако при запуске кода у меня появилось сообщение об ошибке: «Невозможно найти ни один столбец« c », ни агрегированный пользователем« c.DATENAME », либо имя неоднозначно. Это произошло, когда я выполнил левое соединение temp.mm = c.DATENAME (мм, c.expireson). temp - таблица @forecast. – Sabr786
Убедитесь, что ваш запрос выглядит следующим образом: SELECT COUNT (c.statecodename) AS кодовому, c.statecodename, f.mm AS Месяц, f.yy AS Год, DATEPART (гггг, c.expireson) AS YearNum, DATEPART (м, c.expireson) КАК MonthNum оТ @forefast е левое внешнее соединение Table1 как С на f.yy = DATENAME (YYYY, c.expireson) и f.mm = DATENAME (мм, гр .expireson) –
Я исправил его, как вы упомянули, но я все еще не могу отображать все месяцы. Я попытался удалить параметр, и в моем запросе попытался проверить значение параметра datename на определенный месяц, и я все еще не могу получить все отображаемые месяцы. Есть ли причина, почему это может быть так? – Sabr786