【问题标题】:Table Aggregation strategy (SSIS / Stored procedure / SSRS)表聚合策略(SSIS/存储过程/SSRS)
【发布时间】:2011-12-13 22:48:03
【问题描述】:

我有一个包含大约 7,000,000 条记录的表。

它非常扁平,为了论证,我希望在其上汇总 3 列。这种聚合应该非常简单地创建该值的每个实例的计数 /pivot。

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 矩阵控件。在使用小数据集进行测试时,效果非常好。但是,当使用完整的数据集时将无法运行。

解决这个问题的“正确”方法是什么?

我应该通过存储过程或 SSIS 作业进行预聚合吗? 还是我应该继续使用 SSRS 路由并尝试优化我的查询?

谢谢

【问题讨论】:

  • 您使用的是什么版本的 SQL Server?

标签: tsql reporting-services ssis


【解决方案1】:

如果您使用的是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多