sqlserver中的union,cube,rollup和cumpute运算符-金宇
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


sqlserver中的union,cube,rollup和cumpute运算符

发表时间:2008/4/22 10:28:49 评论(0) 浏览(7699)  评论 | 加入收藏 | 复制
   
摘 要:sqlserver中的union,cube,rollup和cumpute运算符
正 文:

union 运算符是将两个或更多查询的结果组合为单个结果集
该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。

使用 union 组合查询的结果集有两个最基本的规则:

1。所有查询中的列数和列的顺序必须相同。

2。数据类型必须兼容

a.union的结果集列名与第一个select语句中的结果集中的列名相同,其他select语句的结果集列名被忽略

b.默认情况下,union 运算符是从结果集中删除重复行。如果使用all关键字,那么结果集将包含所有行并且不删除重复行

c.sql是从左到右对包含union 运算符的语句进行取值,使用括号可以改变求值顺序

--例如:

select * from tablea

union all

(

select * from tableb

union all

select * from tablec

)

这样就可以先对tableb和tablec合并,再合并tablea

d.如果要将合并后的结果集保存到一个新数据表中,那么into语句必须加入到第一条select中

e.只可以在最后一条select语句中使用 order by 和 compute 子句,这样影响到最终合并结果的排序和计数汇总

f.group by 和 having 子句可以在单独一个select查询中使用,它们不影响最终结果

--例如:

select name as 姓名,class as 班级,grade as 年级

       into #students

       from stud87

       union all

select * from stud88

       union all

select * from stud89

       order by 年级

将3个班级的合并结果(按grade排序)插入到临时表 #students里面

用 cube 汇总数据

cube 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。

cube 运算符在 select 语句的 group by 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。group by 应指定维度列和关键字 with cube。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。

例如,一个简单的表 inventory 中包含:

item                 color                quantity                  
-------------------- -------------------- ----------
table                blue                 124                       
table                red                  223                       
chair                blue                 101                       
chair                red                  210                       

下列查询返回的结果集中,将包含 item 和 color 的所有可能组合的 quantity 小计:

select item, color, sum(quantity) as qtysum
from inventory
group by item, color with cube

下面是结果集:

item                 color                qtysum                    
-------------------- -------------------- ---------
chair    &nb


Access软件网交流QQ群(群号:198465573)
 
 相关文章
sqlserver中的union,cube,rollup和cump...  【金宇整理  2008/4/22】
深入讲解SQL Union和Union All的使用方法  【UMVsoft整理  2008/6/19】
[access查询]access中合并两张表为一张表\联合查询\u...  【风行  2012/5/21】
Union与Select into 联合使用  【杏林求真  2013/4/7】
常见问答
技术分类
相关资源
文章搜索
关于作者

金宇

文章分类

文章存档

友情链接