【发布时间】:2014-05-22 19:59:19
【问题描述】:
我一直在使用COUNT(value) OVER (PARTITION BY anothervalue),我喜欢它从我的数据库中提取结果的速度有多快。我现在正试图加快步伐,以便我可以创建一个表格来显示多个计数 - 每个月一个,并排。我不确定是否可能,但想在这里查看。我在网上浏览了一下,但找不到任何以前提出过的问题的例子,所以没有线索。
这是我目前拥有的:
SELECT DISTINCT
TBL.CATEGORY as 'Category Name',
COUNT(TBL.ROW_ID) OVER (PARTITION BY TBL.CATEGORY) as 'Rows in Category'
FROM
MYDB.TBL
WHERE
TBL.FIELD1 = 'something'
AND TBL.FIELD2 = 'somethingelse'
AND TBL.CREATED >= '2014-01-01'
ORDER BY [Rows in Category] desc
给了我这样一张可爱的桌子:
Category Name |Rows in Category
ABC | 166
CBA | 137
CCC | 112
我现在想要得到的是按月细分,所以我的输出最终看起来像这样(不一定要准确,标题可以随机播放):
JANUARY |FEBRUARY
Category Name |Rows in Category | Category Name |Rows in Category
ABC | 162 | CBA | 51
CBA | 86 | CCC | 32
CCC | 70 | ABC | 4
当我尝试添加 GROUP BY 时,它会引发关于聚合函数中未包含某些内容的错误。
如果必须,我可以将查询堆叠在一起,并将每个查询限制为仅显示一个月,但这似乎是很多重复的代码,如果可以的话,我更喜欢并排查看完成。
有什么想法吗?
【问题讨论】:
标签: sql sql-server count group-by window-functions