【发布时间】:2010-06-22 14:40:42
【问题描述】:
我有一个存储文档信息(DocID、名称、类型、所有者等)的数据库表。然后我有另一个表来存储文档的下载时间(DocID、DownloadTime 等)。我正在尝试设置一个页面来记录不同类型的文档(政策、表格、出版物等)在特定月份和年份中获得的点击次数(我有一个用户选择的每个下拉列表)。
我还希望能够将月份或年份留空,例如,用户可以获得一年中所有月份的点击次数。当用户选择月份和年份时,下面的查询可以正常工作。但是,当月份或年份为空时,gridview 不会显示分组的文档类型。例如,如果我想查看 2010 年 1 月的点击量,我会得到:
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)
【问题讨论】:
标签: .net sql-server datetime group-by