LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server2000:ROLLUP和CUBE运算符使用

admin
2011年3月13日 0:25 本文热度 2518
ROLLUP、CUBE运算符和GROUP BY一起使用能在结果集中加入一些额外的统计信息,例如有一张OrderDetail表,结构和数据如下:





例1:统计每个订单的产品数量。

 程序代码
select orderid,sum(quantity) as quantity from orderDetail
group by orderid
with rollup

结果集:


如图所示,ROLLUP统计出了所有订单的产品数。

例2:统计每个订单、每种产品的数量。

 程序代码
select orderid,productid,sum(quantity) as quantity from orderDetail
group by orderid,productid
with rollup

结果集:


如图所示,ROLLUP统计出了每笔订单的产品数以及所有订单的产品数。

例3:统计每个订单、每种产品的金额。

 程序代码
select orderid,productid,quantity,sum(price*quantity) as total from orderDetail
group by orderid,productid,quantity
with rollup

结果集:


如图所示,ROLLUP统计出了每笔订单的金额以及所有订单的金额。

例4:当GROUP BY后边有多个字段时,字段的前后顺序不同,结果就会不同,用例2做测试。

 程序代码
select orderid,productid,sum(quantity) as quantity from orderDetail
group by productid,orderid
with rollup

结果集:


小结

·ROLLUP得紧跟在GROUP BY后边使用;
·GROUP BY后边字段的前后顺序影响ROLLUP的结果;
·ROLLUP将GROUP BY后边字段从右到左依次为NULL再汇总其他聚合列的值;

例5:再以例2为例,CUBE运算符结果为例2和例4结果集的并集。

 程序代码
select orderid,productid,sum(quantity) as quantity from orderDetail
group by orderid,productid
with cube

结果集:


小结

·和ROLLUP运算符不同的是CUBE运算符不受GROUP BY后边字段的前后顺序的影响,CUBE运算符将GROUP BY后边字段排列组合设置为NULL再汇总其他聚合列的值;

GROUPING函数

GROUPING函数可以判断列的值是否是ROLLUP、CUBE运算符生成的,若则则函数值为1,否则为0。再来看一个例子:

 程序代码
select orderid,grouping(orderid) as g1,productid,grouping(productid) as g2,sum(quantity) as quantity from orderDetail
group by orderid,productid
with rollup

结果集:
 

该文章在 2011/3/13 0:25:19 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved