- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用SQL实现统计报表中的“小计”及“合计”
用SQL实现统计报表中的“小计”和“合计”
??
?先来一段概念:
----------------------
?DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途 呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
--------------------------
在 开发统计报表的过程中,经常会碰到在查询到的数据集中,插入一些小计行和合计行。比如在烤烟系统中,几乎每个统计报表都需要加入“合计”行,还有不少涉及 到烟叶等级的统计报表需要加入各烟叶等级的小计行。我看到不少人(包括我自己)都是在程序中专门写一些方法来处理的,有的方法还很繁琐。最近在看SQL Server2000的联机丛书中才发现,利用GROUPING聚合函数和ROLLUP运算符可以轻松实现统计中加入小计和合计功能。
1.??????GROUPPING和ROLLUP的基本知识
1.1.????GROUPPING
是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
语法:?GROUPING?(?column_name?)
参数:?column_name是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
返回类型:?int
备注:?分组用于区分由 CUBE 和 ROLLUP 返回的空值和标准的空值。作为CUBE 或 ROLLUP 操作结果返回的 NULL 是 NULL 的特殊应用。
1.2.????ROLLUP
ROLLUP?运算符生成聚合汇总,?需要汇总信息时,此运算很有用。该运算符生成的结果集类似于?CUBE?运算符生成的结果集。但它们两者有一些区别,CUBE?生成的结果集显示了所选列中值的所有组合的聚合。而ROLLUP?生成的结果集显示了所选列中值的某一层次结构的聚合。
语法:?ROLLUP?(?column_name1[,column_name2。。。]?)
用法:?用在GROUP BY?子句中。对那些需要按其分组,并对其分组的聚合数据进行汇总的列,就请对这些列加上ROLLUP运算符。
注意:?“GROUP BY?ROLLUP(col1,col2)”与“GROUP BY?ROLLUP(col1),ROLLUP(col2)”是有区别的。“GROUP BY?ROLLUP(col1),ROLLUP(col2)”其实就相当于“GROUP BY?CUBE(col1,col2)”,因为它对每个分组的聚合都要进行汇总。“GROUP BY?ROLLUP(col1,col2)”与“GROUP BY?ROLLUP(col2,col1)”也有区别,前者是对每个col1的唯一值都产生一个在col1下各个col2聚合值汇总的行,再对所有col1与col2的聚合值产生一个汇总行;而后者是对每个col2的唯一值都产生一个在col2下各个col1聚合值的汇总行,再对所有col1与col2的聚合值产生一个汇总行。这样说逻辑可能不太清晰,我们看一下下面的图表就一目了然了。
col1col2amount
col1col2amount3235847773235847773342200789.13 5227443242200789.
您可能关注的文档
- 班主任工作手记3怎样纠正孩子的错误行为祖跃芳.doc
- 班主任工作研究性学习汇报学习方法情况调查.doc
- 班主任工作经验交流-中等生的教育.doc
- 班主任工作类教育叙事的案例.doc
- 班主任工作手则正式版MicrosoftWord文档.doc
- 班主任工作计划2008—2009.doc
- 班主任怎样做好家校合作工作.doc
- 班主任工作中请多运用激励法 — 副本.doc
- 班主任教育的案例用心去关爱学生.doc
- 班主任是班级的组织者及教育管理者.doc
- 2025年成都市玩偶生产荧光涂鸦互动玩偶开发可行性研究报告.docx
- 2025年成都市海绵生产用于体育馆室外运动场地透水改造可行性研究报告.docx
- 2025年天津市体操鞋企业团建运动应用报告.docx
- 2025年上海市溶洞极限运动(速降)场地开发可行性研究报告.docx
- 2025年上海市涵洞工程施工技术应用可行性研究报告.docx
- 2025年上海市体育场馆设施扎带安全防护可行性研究报告.docx
- 2025年上海市牦牛育肥产业园区建设可行性研究报告.docx
- 2025年旅拍宠物陪伴拍摄项目可行性研究报告.docx
- 2025年上海市进口食品节庆主题快闪店可行性研究报告.docx
- 2025年上海市洗选厂尾矿综合利用产业化可行性研究报告.docx
最近下载
- GB15763.1-2009 建筑用安全玻璃 第1部分:防火玻璃 (2).pdf VIP
- DB5101T 217—2025成都市城市绿化养护技术规程.pdf
- 漫画解读--非煤露天矿山重大事故隐患判定标准.pdf
- 伤口、造口、失禁性皮炎理论考试试题与参考答案.docx VIP
- LNG气化站安装工程施工的方案.doc VIP
- 2023年8月26日全国事业单位联考A类《职业能力倾向测验》真题.pdf VIP
- 跨境电子商务英语 课件 柯可 Unit 1 Overview of Cross-Border E-Commerce、 Unit 2 Main Cross-Border E-Commerce Platforms.pptx
- 2024年辅警招聘《公安工作基本知识》培训考试题库 (附答案).docx VIP
- 低氧对肝脏脂质代谢影响研究.docx VIP
- GB T 34986-2017 产品加速试验方法.doc VIP
文档评论(0)