表聚合策略(SSIS /存储过程/ SSRS)

时间:2011-10-24 08:27:30

标签: tsql reporting-services ssis

我有一张约有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路由并尝试优化我的查询吗?

谢谢

1 个答案:

答案 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