使用联盟,立方体,汇总说明,在SQLServercumpute算子

使用联盟,立方体,汇总说明,在SQLServercumpute算子
*
- 1联合操作符将两个或多个查询的结果合并为一个结果集。
使用联合组合查询的结果集有两条基本规则:
1、所有查询中的列数必须按列的顺序相同。
2、数据类型必须兼容。
对a.union浓度和第一集列名在SELECT语句的结果是一样的,另一个SELECT语句的结果集被忽略
默认情况下,联合操作符将从结果集中删除重复行。如果使用所有关键字,结果集将包含所有行,不删除重复行。
C.sql是从左到右包含UNION运算符的语句的值,和括号的命令可以用来改变求值顺序
-例如:
* /
SELECT * FROM中
联盟的所有

SELECT * FROM TableB
联盟的所有
SELECT * FROM tablec

*
这允许你合并TableB和tablec第一,然后合并图层
如果要将合并的结果集保存到新的数据表,则必须将入语句添加到第一个SELECT中。
E只能在最后一个SELECT语句中使用顺序和计算子句,这将影响最终合并结果的排序和计数摘要。
的f.group和HAVING子句可以被使用在一个单一的选择查询,而不影响最终结果
* /
——2立方汇总数据
*
多维数据集运算符生成的结果集是多维数据集,多维数据集是事实数据的扩展,事实数据是记录单个事件的数据。
扩展是建立在用户打算分析的列上的,这些列称为维度,多维数据集是一组包含每个维度交叉表的所有可能组合的结果。
多维数据集运算符在SELECT语句的组子句中指定。此语句的选择列表应包含维度列和聚合函数表达式。
组应该用多维数据集指定维度列和关键字。结果集将包含维度列中所有值的可能组合,以及与这些维度值的组合相匹配的基线中的聚合值。
* /
-下面的查询返回结果集将包含所有可能的数量组合:项目和颜色:
>标题:生成测试数据
-->作者:wufeng4552
-->日期:2009-09-10 14:36:20
如果不object_id('tempdb .. # T)是无效的
表# T

创建表# T({项目} nvarchar(5),{颜色} nvarchar(4),{数量} int)
插入# T
选择n'table ',n'blue ',124联盟所有
选择n'table ',n'red ',223联盟所有
选择n'chair ',n'blue ',101联盟所有
选择n'chair ',n'red ',210

选择{项目},
{颜色},
总和({ }){数量}
从# T组{项目},{有}立方体的颜色
*
项目颜色数量
贸易数据交换
椅子蓝101
椅子红210
椅子空311
表124蓝色
表红223
表空347
空值658
空蓝225
零红433
* /
多维数据集操作产生的空值带来了一个问题:如何区分多维数据集操作生成的空值和从实际数据返回的null值
这个问题可以用分组函数来解决
如果列中的值来自事实数据,则分组函数返回0;如果列中的值是由多维数据集操作生成的null,则返回1。
在多维数据集操作中,生成的null表示整个值。SELECT语句可以使用分组函数来替换生成的null为字符串。
由于事实数据中的null表示数据值未知,因此SELECT语句也可以对返回字符串进行解码,而不是从事实数据中提取null。
例如:
* /
>标题:生成测试数据
-->作者:wufeng4552
-->日期:2009-09-10 14:36:20
如果不object_id('tempdb .. # T)是无效的
表# T

创建表# T({项目} nvarchar(5),{颜色} nvarchar(4),{数量} int)
插入# T
选择n'table ',n'blue ',124联盟所有
选择n'table ',n'red ',223联盟所有
选择n'chair ',n'blue ',101联盟所有
选择n'chair ',n'red ',210

选择{项目} =情况分组({项目})= 1 then'all'else isnull(项目,'unknown),
{颜色} =情况分组({色})= 1 then'all'else isnull({色},'unknown)结束,
总和({ }){数量}
从# T组{项目},{有}立方体的颜色
*
项目颜色数量
贸易数据交换
椅子蓝101
椅子红210
椅子311
表124蓝色
表红223
表347
所有658
ALL Blue 225
所有的红433
(受影响的9个数据列)
* /
*
包含多维数据集多维维度的SELECT语句可以生成大的结果集,它将生成所有中值组合的行。
这些大的结果集可能包含太多的数据,这些数据不容易阅读和理解:
* /
创建视图view_cube
作为
选择{项目} =情况分组({项目})= 1 then'all'else isnull(项目,'unknown),
{颜色} =情况分组({色})= 1 then'all'else isnull({色},'unknown)结束,
总和({ }){数量}
从TB组{ { },{ }与多维数据集-您不能在视图中使用临时表,因此更改它
-然后您可以使用视图只查询您感兴趣的维度的值:
*选择
从invcube
在项目'chair'and 'all'颜色= =
*
产品颜色qtysum

椅子311
* /
3汇总汇总数据
*
汇总汇总数据包含小计和合计的报表生成,ROLLUP运算符是有用的。
结果集由ROLLUP运算符生成的结果集类似于CUBE运算符生成的。
多维数据集和汇总的区别是结果集的多维数据集生成显示的值的所有组合在所选列的聚集。
结果集的汇总生成显示一个层次结构中的所选列中值的聚集。例如,简单的表# T
它包含:项目颜色数量。
* /
选择{项目} =情况分组({项目})= 1 then'all'else isnull(项目,'unknown),
{颜色} =情况分组({色})= 1 then'all'else isnull({色},'unknown)结束,
总和({ }){数量}
从# T组{项目},{上卷颜色}
*
项目颜色数量
贸易数据交换
椅子蓝101
椅子红210
椅子311
表124蓝色
表红223
表347
所有658
(受影响的7个数据列)
* /
*
如果查询中的ROLLUP关键字更改为立方体,立方体的结果集,然后如上结果相同,但它将返回以下两行在结果集的结尾:蓝225。
所有的红433
多维数据集操作是项目和颜色的中间值的一个可能组合,以生成行。
例如,多维数据集不仅报告与项目值椅子(红、蓝、红+蓝)相结合的所有颜色值的可能组合,
所有与红色值(椅子、表和椅子+表)相结合的项值的所有可能的组合都被报告。
每个值的条款的组的右列,ROLLUP操作不报告的左栏中的所有可能的组合(或左栏为例),
汇总不报告所有可能的组合项的值为每个颜色值。
结果集汇总操作的功能类似于返回的结果集的计算;然而,汇总有以下优点:ROLLUP返回单个结果集;计算返回多个结果集,而多个结果集增加应用程序代码的复杂性。
汇总可用于服务器游标;计算不可用。
有时,由查询优化器为汇总执行计划的效率更高,产生的计算。
* /
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部