【发布时间】:2012-04-17 11:39:54
【问题描述】:
我有一个表格,其中包含特定日期的某个类别的点击次数。像这样:
ID CatID Date Count
1 DADB 2011-11-04 00:00:00 3
2 DCBC 2011-11-04 00:00:00 9
3 DADH 2011-11-04 00:00:00 9
所以要显示两个日期之间每个类别的总数,我会这样做:
SELECT WebClicksCategory.CatID, sum(WebClicksCategory.Count) as Count
FROM [Web].[dbo].[WebClicksCategory]
WHERE Date >= '2011-04-17 00:00:00.000'
AND Date <= '2012-04-17 00:00:00.000'
GROUP BY WebClicksCategory.CatID
ORDER BY Count desc
但是,如果我想对这些结果进行分页并执行以下操作:
SELECT * FROM
( SELECT row_number() OVER (order by Count) AS rownum,
WebClicksCategory.CatID, sum(WebClicksCategory.Count) as Count
FROM [Web].[dbo].[WebClicksCategory]
WHERE Date >= '2011-04-17 00:00:00.000'
AND Date <= '2012-04-17 00:00:00.000'
GROUP BY WebClicksCategory.CatID
) AS A
WHERE A.rownum BETWEEN (50) AND (200)
但我得到一个“列 WebClicksCategory.Count 在选择列表中无效,因为它既不包含在聚合函数也不包含在 GROUP BY 子句中”错误。还有其他方法可以对结果进行分页吗?
【问题讨论】:
标签: sql sql-server pagination