我有一张约有7,000,000条记录的表格。
它非常扁平,为了争论它有3列我希望聚合。这种聚合应该非常简单地创建该值的每个实例的计数/枢轴。
E.G
Company Status Year
Hatstand Open 2011
Hatstand Closed 2011
Moonbase Open 2011
会产生
Count of Hatstand **2**
Count of Hatstand Open **1**
Count of Hatstand Open 2011 **1**
所以这是对数据的每个“分支”的非常简单的计数。
我的第一选择是使用SSRS Matrix控件。在使用小型数据集进行测试时效果非常好。但是,当使用完整数据集时,将无法运行。
解决此问题的“正确”方法是什么?
我应该通过存储过程或SSIS作业进行预聚合吗? 或者我应该继续使用SSRS路由并尝试优化我的查询吗?
谢谢
答案 0 :(得分:2)
如果您使用的是SQL Server 2005或2008,则首选T-SQL。
如果您使用的是SQL Server 2005或2008,可以尝试:
SELECT *, COUNT(*) FROM TBL
GROUP BY COMPANY, STATUS, YEAR
WITH ROLLUP -- or WITH CUBE
如果您使用的是SQL Server 2008,可以尝试使用:
SELECT *, COUNT(*) FROM A
GROUP BY
GROUPING SETS (
(COMPANY),
(COMPANY, STATUS),
(COMPANY, STATUS, YEAR)
)
有关GROUP BY WITH ROLLUP / CUBE和GROUPING SETS的详细信息,请查看GROUP BY。