当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server数据汇总完全解析

MSSQL
系统存储过程sp_MSforeachtable和sp_MSforeachdb使用说明
一些文件未注册导致mssql表文件无法找开的解决方法
用sql获取某字符串中的数字部分的语句
SQL 判断字段类型语句
MSSQL 生成日期列表代码
MSSQL 计算两个日期相差的工作天数的语句
SqlServer 实用操作小技巧集合
sql中all,any,some用法
最常用的SQL语句
SQL语法 分隔符理解小结
sql 服务器知识
隐藏在SQLServer 字段中的超诡异字符解决过程
将备份数据还原到数据库的步骤
SQL Server 高速缓存依赖分析
SQL 多表连接查询实现语句
sql convert函数使用小结
sqlserver2005 行列转换实现方法
跨服务器查询导入数据的sql语句
返回SQL执行时间的存储过程
MSSQL ISQL命令详解

MSSQL 中的 SQL Server数据汇总完全解析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 47 ::
收藏到网摘: n/a

前言:

  在论坛上经常看到有人问“如何实现数据的分类汇总”,很多的人都是介绍这样或那样的控件来实现,而没有从关系数据库语言(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 之间的区别在于: CUBE 生成的结果集显示了所选列中值的所有组合的聚合;ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。

  看完以上的这段话,悟出了什么没有?如果没有,那么……嘿嘿,你的悟性还不够哟,离“三花棸顶”还早着呢:)。接下来我们再看一段(注意哟,答案马上就揭晓了):