У меня есть таблица базы данных, в которой хранится информация о документе (DocID, Имя, Тип, Владелец и т. Д.).Затем у меня есть другая таблица, в которой хранится время загрузки документа (DocID, DownloadTime и т. Д.).Я пытаюсь настроить страницу для записи количества обращений, которые различные типы документов (политики, формы, публикации и т. Д.) Получают за определенный месяц и год (у меня есть раскрывающийся список для каждого, который выбирает пользователь).
Я также хочу иметь возможность оставить месяц или год пустыми, чтобы пользователь мог получать хиты за все месяцы в году, например.Запрос ниже работает нормально, когда пользователь выбирает месяц и год.Тем не менее, когда месяц или год оставлены пустыми, в виде таблицы не отображаются сгруппированные типы документов.Например, если я хочу просмотреть хиты за январь 2010 года, я получаю:
Policies : 210 hits
Forms: 98 hits
и т. Д.
Но когда пользователи выбирают все месяцы в 2010 году, пользователь получает:
Policies: 210 hits
Policies: 87 hits
Policies: 23 hits
Policies: 87 hits
Forms
и т. Д.
Итак, я получаю все месяцы в разных строках, но не сгруппированы как один вид.Где неправильный запрос?
SELECT COUNT(Counter.DocID) AS Counter,
Doc.DocType,
MONTH(Counter.DownloadDate) AS MonthDownload,
YEAR(Counter.DownloadDate) AS YearDownload
FROM Counter
INNER JOIN Doc ON Counter.DocID = Doc.DocID
GROUP BY Doc.DocType,
MONTH(Counter.DownloadDate),
YEAR(Counter.DownloadDate)
HAVING (MONTH(Counter.DownloadDate) = @Month1 OR @Month1 IS NULL) AND
(YEAR(Counter.DownloadDate) = @Year1 OR @Year1 IS NULL)