欢迎来到天天文库
浏览记录
ID:9416946
大小:53.00 KB
页数:4页
时间:2018-04-30
《sqlserver数据库的数据汇总完全解析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQLServer数据库的数据汇总完全解析>>教育资源库 前言: 在论坛上经常看到有人问如何实现数据的分类汇总,很多的人都是介绍这样或那样的控件来实现,而没有从关系数据库语言(SQL)的本身来考虑实现方法。这里,我就借一个实例来说明如何借助SQL自身强大的功能来实现数据的分类汇总。 问题的提出: 现有表A,内容如下:编码 仓库 数量01 A 601 B 702 A 802 B 9 现在想按编码查询出这种格式:01 A 601 B 7汇总小计: 1302 A 802 B 9汇总小计:
2、 17 问:该如何实现? 乍一看,好像很容易,用groupby好像能实现?但仔细研究下去,你又会觉得groupby也是无能为力,总欠缺点什么,无从下手。那么,到底该如何做呢?别急,SQLServer早就帮我们做好了,下面,跟我来。 首先,让我们来看一段话: 在生成包含小计和合计的报表时,ROLLUP运算符很有用。ROLLUP运算符生成的结果集类似于CUBE运算符所生成的结果集。 CUBE运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包
3、含了各维度的所有可能组合的交叉表格。 CUBE运算符在SELECT语句的GROUPBY子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUPBY应指定维度列和关键字AGROUPBY编码,仓库(数量)AS数量FROMAGROUPBY编码,仓库WITHROLLUP --适当的运用Case函数 结果我这里就不写了,就是把上面的NULL值全部换成ALL字符串 2、利用程序做进一步的优化 //通常为了显示上的需要,我们必须对以上SQL语句生成的结果做一些优化,下面给出自然语言描述:WHILE(未到达最后一条记录){ IF编码值不为ALL而仓库值
4、为ALL { 将编码值用小计:替换,将仓库值用替换; 将这一行的颜色标示为灰色; } ELSE编码值为ALL仓库值也为ALL { 将编码值用总计:替换,将仓库值用替换; 将这一行的着色标示为淡绿色; } 指针移到下一条;} //当然,你尽可以发挥你的12下一页>>>>这篇文章来自..,。想象,把表格打扮得漂漂亮亮的,我就不再罗嗦了。 结束语: 通过上面的讲述,不知道你明白了没有,限于的文字表达能力,未解释清楚之处还请见谅。上一页12>>>>这篇文章来自..,。
此文档下载收益归作者所有