数据汇总

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

汇总数据操作符:

compute:使用聚合函数生成数据的汇总值.详细信息及所有行的总值.

compute by:后面加by不会生成一个总的汇总值.而是详细信息及每一类别的汇总值.

with rollup:可以创建 group by 子句元素内元素的汇总与分类汇总.

with cube:可以创建 group by子句中列表的所有可能的分组组合,生成超聚合行.

COPY了SQL 联机帮助里的一段:

-----------------------

ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,ROLLUP 具有下列优点:

ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。

ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。

有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效

-------------------------

下面就是针对上面四个操作符的例子.首先把group by分组列出来对比:

use tsie

go

select * from syscolumns where id=object_id(N'OMaster')

--------------------------------

--group by:显示信息为每个销售单负责者每月每项物料的欠量量;

SELECT CONMer,datepart(MM,Curdate)as curMonth,PartNum,sum(DQty)

FROM SMaster s,OMaster o

where s.OrderNum=o.OrderNum

and Curdate<getdate()

and PartNum like '1-6-1%'

group by CONMer,datepart(MM,Curdate),PartNum

order by CONMer,datepart(MM,Curdate)

/*

CONMer curMonth PartNum

------------------------------ ----------- --------------- ---------------------

9 1-6-141 50000.0

FM 8 1-6-145 10000.0

FM 9 1-6-141 50000.0

FM 9 1-6-145 12850.0

JH 7 1-6-145 0.0

JH 8 1-6-141 8500.0

JH 8 1-6-145 21200.0

(所影响的行数为 7 行)

*/

--------------------------------

--compute by: 分类分组显示:具有详细信息,也会在每一组后给个汇总值.注意Compute by 后的列必须出现在语句的选择列中以及order by中,并且按顺序(order by中的)出现.否则将出现如下信息:

/*

服务器: 消息 163,级别 15,状态 1,行 7

计算依据列表与排序依据列表不匹配。

*/

SELECT CONMer,datepart(MM,Curdate)as curMonth,PartNum,DQty

FROM SMaster s,OMaster o

where s.OrderNum=o.OrderNum

and Curdate<getdate()

and PartNum like '1-6-1%'

order by CONMer,datepart(MM,Curdate),PartNum

compute sum(DQty) by CONMer,datepart(MM,Curdate),PartNum

--------------------------------

/*

CONMer curMonth PartNum DQty

------------------------------ ----------- --------------- -------------------------------

9 1-6-141 50000.0

sum

===================================

50000.0

CONMer curMonth PartNum DQty

------------------------------ ----------- --------------- -----------------------------------------------------

FM 8 1-6-145 10000.0

sum

==================================

10000.0

CONMer&n

[1] [2] [3] [4] [5] [6] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航