sqlserver中的union,cube,rollup,cumpute运算符[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bandt 的 blog

       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                        

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

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

下面是结果集:

item                 color                qtysum                     
-------------------- -------------------- -------------------------- 
chair                blue                 101.00                     
chair                red                  210.00                     
chair                (null)               311.00                     
table                blue                 124.00                     
table                red                  223.00                     
table                (null)               347.00                     
(null)               (null)               658.00                     
(null)               blue                 225.00                     
(null)               red                  433.00                     

我们着重考查下列各行:

chair                (null)               311.00                     

这一行报告了 item 维度中值为 chair 的所有行的小计。对 color 维度返回了 null 值,表示该行所报告的聚合包括 color 维度为任意值的行。

table                (null)               347.00                     

这一行类似,但报告的是 item 维度中值为 table 的所有行的小计。

(null)               (null)               658.00                     

这一行报告了多维数据集的总计。itemcolor 维度的值都是 null,表示两个维度中的所有值都汇总在该行中。

(null)               blue                 225.00                     
(null)               red                  433.00                     

这两行报告了 color 维度的小计。两行中的 item 维度值都是 null,表示聚合数据来自 item 维度为任意值的行。

本文关键:sqlserver中的union,cube,rollup,cumpute运算符
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top