汇总数据

为决策支持系统生成聚合事务的汇总报表会是一项复杂并且相当消耗资源的工作。下列组件是程序员在执行 SQL Server 数据的多维分析时应当使用的主要工具:

  • SQL Server Integration Services

    Integration Services 支持提取事务数据并将其转换成数据仓库或数据市场中的汇总聚合。有关详细信息,请参阅概述 (Integration Services)

  • SQL Server Analysis Services

    Analysis Services 用于将数据仓库中的数据组织为含有预先计算好的汇总信息的多维数据集。此汇总信息用于为复杂的分析查询提供快速解答。使用 PivotTable® 服务可在客户端访问多维数据。Analysis Services 还提供一组向导,用于定义在 Analysis 处理过程中使用的多维结构,并提供用于管理 Analysis 结构的 Microsoft 管理控制台管理单元。这样,应用程序就可以使用一组 API 来分析 Analysis 数据。有关详细信息,请参阅使用 Business Intelligence Development Studio 进行开发和实现

对简单汇总报表使用 Transact-SQL

生成简单汇总报表的应用程序可使用下列 Transact-SQL 元素:

  • ROLLUP、CUBE 或 GROUPING SETS 运算符。这些是 SELECT 语句的 GROUP BY 子句的扩展。有关详细信息,请参阅 GROUP BY (Transact-SQL)

  • COMPUTE 或 COMPUTE BY 运算符。这两种运算符也与 GROUP BY 相关联。有关详细信息,请参阅用 COMPUTE 和 COMPUTE BY 汇总数据

这些运算符生成的结果集中,既包含每个项目的明细行,也包含每个组的汇总行,汇总行显示了该组的聚合合计。GROUP BY 子句可用于生成只包含各组的聚合而不包含其明细行的结果。

应用程序应使用 Analysis Services,而不是 CUBE、ROLLUP、COMPUTE 或 COMPUTE BY。特别要注意的是,CUBE 和 ROLLUP 应当只用在无法访问 OLE DB 或 ADO 的环境中,例如脚本或存储过程中。

支持 COMPUTE 和 COMPUTE BY 是为了向后兼容。应当优先选用 ROLLUP 运算符而非 COMPUTE 或 COMPUTE BY。由 COMPUTE 或 COMPUTE BY 生成的汇总值将作为多个单独的结果集返回,这些结果集之间还插入了包含各组明细行的结果集;或者作为包含合计的结果集返回,附加在主结果集之后。处理这些多个结果集将增加应用程序代码的复杂性。服务器游标既不支持 COMPUTE,也不支持 COMPUTE BY。但 ROLLUP 支持服务器游标。CUBE 和 ROLLUP 将生成单个结果集,其中包含嵌入的小计和合计行。此外,查询优化器有时还可以为 ROLLUP 生成比为 COMPUTE 和 COMPUTE BY 生成的执行计划更高效的执行计划。

如果使用不带这些运算符的 GROUP BY,将返回单个结果集,其中每组对应一行,行中包含该组的聚合小计。结果集中没有明细行。

请参阅

其他资源