职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1776|回复: 3

SQL Server的Cube操作符使用详解

[复制链接]
cayean 发表于 2006-11-23 14:06 | 显示全部楼层 |阅读模式
SQL Server的Cube操作符使用详解  
  要使用cube,首先要了解group by,其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别,cube将返回的更多的可能组合。如果在 group by 子句中有n个列或者是有n个表达式的话,sqlserver在结果集上会返回2的n-1次幂个可能组合。
注意:
使用cube操作符时,最多可以有10个分组表达式,在cube中不能使用all关键字。
例子:   我们在数据库统计中常常要查询以下情况:
  如一个定单数据库,我们要知道每个定单的每个产品数量,每个定单的所有产品数量,所有定单的某一产品数量,所有定单所有产品总量这些汇总信息。这时使用cube就十分方便了。当然不需要这么多信息或者只想知道某一具体产品、具体某一定单,某一时间关系(前,后,之间)等等具体信息的话,只需在where中限定即可
先举一个例子,是所有情况的:
一个数据库表中记载了一个产品定购情况:
现共有三种产品(1,2,3),已经下了两个定单(1,2)
sql语句:

select productid,orderid SUM(quantity) AS total FROM order GROUP BY productid,orderid WITH CUBE

ORDER BY productid,orderid

运行后得到结果:

productid orderid total

null null 95 所有定单所有产品总量

null 1 30 定单1所有产品数量

null 2 65 定单2所有产品数量

1 null 15 所有定单产品1总量

1 1 5 定单1产品1数量

1 2 10 定单2产品1数量

2 null 35 所有定单产品2总量

2 1 10 定单1产品2数量

2 2 25 定单2产品2数量

3 null 45 所有定单产品3总量

3 1 15 定单1产品3数量

3 2 30 定单2产品3数量


  如果您对sqlserver group by 聚集有一定理解的话,您就可以理解cube操作符的用法和作用。
 楼主| cayean 发表于 2006-11-23 14:10 | 显示全部楼层
希望对大家有帮助!
Ricky 发表于 2006-11-23 16:34 | 显示全部楼层
哇塞,好崇拜斑竹!!!!!
joe 发表于 2006-11-23 16:58 | 显示全部楼层
cube...长了见识了.
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-14 12:29 , Processed in 0.124731 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表