分组、汇总使用,在SQLServer在总结函数的立方体

分组、汇总使用,在SQLServer在总结函数的立方体
第一次看到这样的SQL语句时,您无法理解它,它使用了以下一些不常用的语句。

聚合功能:分组

汇总数据操作:汇总

选择

病例分组(o.customerid)当0 o.customerid别人(总)结束

AllCustomersSummary,

病例分组(OD。OrderId)当0 od.orderid其他1端

IndividualCustomerSummary,

和(OD。数量*单价价格法。)

从订单O,{订单详细信息}

在今年(o.orderdate)= 1998行= o.orderid OD。

集团通过o.customerid,od.orderid与汇总

为了allcustomerssummary

看看SQL Server的帮助,人们发现,有这么一件了不起的事情是令人惊奇的。在编写水晶报表之前,它可以在SQL Server中实现这些功能。
1。用立方体汇总数据
结果集的CUBE运算符生成的是一个多维数据集的多维数据集是数据的一种延伸,和事实数据的数据记录个人事件。扩展都是建立在用户试图分析列,这些列称为维度,多维数据集是一组结果包含每个维度交叉表的所有可能的组合。

CUBE运算符由SELECT语句子句中指定的组。这个语句选择列表应包含维度列和聚合函数的expression.group应指定维度列和立方体的关键词,结果集将包含维度列中各值的所有可能组合,和总价值在这些维度值组合相匹配的基准线。

例如,一个简单的表目录包含:

产品颜色蓝色------------------------------------------------------------------量表124表223椅子101把椅子红蓝红210

下面的查询返回结果集将包含所有可能的数量组合:项目和颜色:

选择项目、颜色、金额(数量)为qtysumfrom inventorygroup项,颜色

下面是结果集:

产品颜色qtysum椅子椅子椅子蓝------------------------------------------------------------------ 101红210(空)311表124表223表红蓝(零)347(零)(零)658(零)225(零)红433蓝

我们的论文着重于以下几行:

主席(空)311

所有行的小计报告项目维度的椅子的值。NULL值返回到颜色维度,表示行报告的聚合包括颜色维度任意值的行。

表(NULL)347

此行类似,但报告是项目维度表中值的所有行的小计。

(NULL)(空)658

该行报告多维数据集的总数。该项和颜色维度的值均为NULL,表示两个维度中的所有值都聚集在行中。

(空)蓝色225(空)红色433

这两行报告:颜色维度。两行中的项维度值都为null,表示来自项维度的聚合数据是任意值的行。

使用分组来区分空值
多维数据集操作生成的空值带来了一个问题:如何区分多维数据集操作生成的空值和从实际数据返回的null值这个问题可以通过分组功能解决。如果列中的值是从事实数据,分组函数返回0;如果列中的值是零的立方体操作生成的,则返回1。在立方体的操作,生成的零代表整个价值。SELECT语句可以被写使用GROUPING函数替换成一个字符串生成空的。因为在事实数据零表示数据值是未知的,SELECT语句也可以解码返回字符串而不是空从未知事实的数据。例如:

选择案例时(分组(项目)= 1)then'all'else isnull(项目,'unknown)作为项目结束时(分组(颜色)= 1)then'all'else isnull(颜色,'unknown)端颜色笔(数量)为qtysumfrom inventorygroup项目,彩色立方体

多维数据集
多维数据集运算符可以用来生成多维数据的多维数据集,也就是多维数据集,它具有任意数量的维度:

选择案例时(分组(项目)= 1)then'all'else isnull(项目,'unknown '),项目,和(())

SELECT语句返回一个结果集,显示在每个值中:item,item也显示所有的值:

项目qtysum椅子311表347 658 ----------------------------------------------

包含多维数据集多维数据集的SELECT语句可以生成大的结果集,这些结果集将生成所有中值组合的行。这些大的结果集可能包含太多的数据,这些数据不便于阅读和理解:

创建视图时invcube asselect(分组(项目)= 1)then'all'else isnull(项目,'unknown)作为项目结束时(分组(颜色)= 1)then'all'else isnull(颜色,'unknown)端颜色笔(数量)为qtysumfrom inventorygroup项目,彩色立方体

然后,您可以使用视图只查询您感兴趣的维度的值:

SELECT * FROM invcubewhere项目and'all'item颜色= 'chair'color = qtysum椅311 ------------------------------------------------------------------(1行(S)的影响
2。总结和汇总数据
在生成包含小计和合计报表,ROLLUP运算符是有用的。结果集由ROLLUP运算符生成的结果集类似于CUBE运算符生成的更多信息。

CUBE和ROLLUP的区别在于:

多维数据集生成的结果集显示了所选列中所有值组合的集合。
结果集的汇总生成显示一个层次结构中的所选列中值的聚集。

例如,简单表清单包含:

产品颜色蓝色------------------------------------------------------------------量表124表223椅子101把椅子红蓝红210

下面的查询将生成报表的分类汇总:

选择案例时(分组(项目)= 1)then'all'else isnull(项目,'unknown)作为项目结束时(分组(颜色)= 1)then'all'else isnull(颜色,'unknown)端颜色笔(数量)为qtysumfrom inventorygroup的项目,与rollupitem颜色qtysum椅子椅子------------------------------------------------------------------蓝101红210表124表311椅子都蓝红223表347所有658个颜色(7行(S)的影响)

如果查询中的ROLLUP关键字更改为立方体,立方体的结果集,然后如上结果相同,但它将返回以下两行在结果集的最后。

全蓝225全红433

多维数据集操作是一个可能的项目和颜色的中间组合,以生成行。例如,多维数据集不仅报告与项目值椅子(红色、蓝色和红色+蓝色)相结合的所有可能的颜色值组合,还报告所有可能的项目值组合,并与颜色值红色(红色、蓝色和++)相结合。

每个值的条款的组的右列,ROLLUP操作不报告的左栏中的所有可能的组合(或左栏)。例如,汇总不报告所有可能的组合项的值为每个颜色值。

套ROLLUP操作的结果有相似的函数的结果集返回计算的;然而,汇总有以下优点:

ROLLUP返回单个结果集;计算返回多个结果集,和多个结果集增加应用程序代码的复杂性。
汇总可用于服务器游标;计算不可用。
有时,由查询优化器为汇总执行计划的效率更高,产生的计算。
3.grouping
它是一个聚合函数,它生成一个额外的列。当添加与CUBE或ROLLUP运算符的行,额外的列输出值为1。当连续增加不是由CUBE或ROLLUP生成的,额外的列值为0。

分组是只有在含有CUBE或ROLLUP运算符条款组关联的选择列表允许。

语法
分组(column_name)

参数
column_name
这是一个使用GROUP BY子句检查CUBE或ROLLUP空值的列。

返回类型
int

笔记
组是用来区分空值和标准值为空的CUBE和ROLLUP返回。空返回由于CUBE或ROLLUP操作是无效的一种特殊应用。它是在结果集的列的占位符,意义。

样品
下面的示例将版税的数值分组并聚合了预付值。

使用pubsselect版税总和(提前),综合推进,分组(皇室)'grp称号

结果集显示两个空值下的版税。第一个空表示从本表中的列得到的空值组。第二空在集合线添加到汇总操作。汇款行显示所有版税组提前总价值等同于1的玻璃钢柱。

下面是结果集:

特许权使用费总额预付GRP ---------------------------------零1057000.0000012 2275.0000014 4000.0000016 7000.0000024 25125 95400.00001空

3.grouping
它是一个聚合函数,它生成一个额外的列。当添加与CUBE或ROLLUP运算符的行,额外的列输出值为1。当连续增加不是由CUBE或ROLLUP生成的,额外的列值为0。

分组是只有在含有CUBE或ROLLUP运算符条款组关联的选择列表允许。

语法
分组(column_name)

参数
column_name
这是一个使用GROUP BY子句检查CUBE或ROLLUP空值的列。

返回类型
int

笔记
组是用来区分空值和标准值为空的CUBE和ROLLUP返回。空返回由于CUBE或ROLLUP操作是无效的一种特殊应用。它是在结果集的列的占位符,意义。

样品
下面的示例将版税的数值分组并聚合了预付值。

使用pubsselect版税总和(提前),综合推进,分组(皇室)'grp称号

结果集显示两个空值下的版税。第一个空表示从本表中的列得到的空值组。第二空在集合线添加到汇总操作。汇款行显示所有版税组提前总价值等同于1的玻璃钢柱。

下面是结果集:

特许权使用费总额预付GRP ---------------------------------零1057000.0000012 2275.0000014 4000.0000016 7000.0000024 25125 95400.00001空

3.grouping
它是一个聚合函数,它生成一个额外的列。当添加与CUBE或ROLLUP运算符的行,额外的列输出值为1。当连续增加不是由CUBE或ROLLUP生成的,额外的列值为0。

分组是只有在含有CUBE或ROLLUP运算符条款组关联的选择列表允许。

语法
分组(column_name)

参数
column_name
这是一个使用GROUP BY子句检查CUBE或ROLLUP空值的列。

返回类型
int

笔记
组是用来区分空值和标准值为空的CUBE和ROLLUP返回。空返回由于CUBE或ROLLUP操作是无效的一种特殊应用。它是在结果集的列的占位符,意义。

样品
下面的示例将版税的数值分组并聚合了预付值。

使用pubsselect版税总和(提前),综合推进,分组(皇室)'grp称号

结果集显示两个空值下的版税。第一个空表示从本表中的列得到的空值组。第二空在集合线添加到汇总操作。汇款行显示所有版税组提前总价值等同于1的玻璃钢柱。

下面是结果集:

特许权使用费总额预付GRP ---------------------------------零1057000.0000012 2275.0000014 4000.0000016 7000.0000024 25125 95400.00001空

分组,汇总介绍,和立方体来自SQL Server2000中文版的帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部