WEB开发网
开发学院数据库MSSQL Server SQL Server数据库的数据汇总完全解析 阅读

SQL Server数据库的数据汇总完全解析

 2007-05-19 09:44:00 来源:WEB开发网   
核心提示:前言:在论坛上经常看到有人问“如何实现数据的分类汇总”,很多的人都是介绍这样或那样的控件来实现,SQL Server数据库的数据汇总完全解析,而没有从关系数据库语言(SQL)的本身来考虑实现方法,这里,GROUP BY 应指定维度列和关键字 WITH CUBE,结果集将包含维度列中各值的所有可能

前言:

在论坛上经常看到有人问“如何实现数据的分类汇总”,很多的人都是介绍这样或那样的控件来实现,而没有从关系数据库语言(SQL)的本身来考虑实现方法。这里,我就借一个实例来说明如何借助SQL自身强大的功能来实现数据的分类汇总。

问题的提出:

现有表A,内容如下:

编码  仓库  数量
01   A    6
01   B    7
02   A    8
02   B    9

现在想按编码查询出这种格式:

01   A    6
01   B    7
汇总小计:   13
02   A    8
02   B    9
汇总小计:   17

问:该如何实现?

乍一看,好像很容易,用group by好像能实现?但仔细研究下去,你又会觉得group by也是无能为力,总欠缺点什么,无从下手。那么,到底该如何做呢?别急,SQL Server早就帮我们做好了,下面,跟我来。

首先,让我们来看一段话:

在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集。

CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。

CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。

CUBE 和 ROLLUP 之间的区别在于:

1 2 3  下一页

Tags:SQL Server 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接