cube子句的用法

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

cube子句在dw环境用的比较多,非凡是在产生交叉报表的情况,演示一个cube的例子

SQL 10Gcreate table test(sales varchar2(10),dest varchar2(10),revenue number);

Table created.

SQL 10Ginsert into test values('smith','hangzhou',1000);

1 row created.

SQL 10Ginsert into test values('smith','wenzhou',2000);

1 row created.

SQL 10Ginsert into test values('allen','wenzhou',3000);

1 row created.

SQL 10Ginsert into test values('allen','wenzhou',4000);

1 row created.

SQL 10Gcommit;

Commit complete.

SQL 10Gselect * from test;

SALESDESTREVENUE

---------- ---------- ----------

smithhangzhou 1000

smithwenzhou2000

allenwenzhou3000

allenwenzhou4000

比如说我们想统计每个sales的总销售收入,每个sales在各个城市的销售收入,另外还想知道每个城市所有sales的销售收入总额,以及所有sales的总收入

就像以下报表

hangzhou wenzhou

allen70007000

smith100020003000

1000900010000

那我们运行下面这条语句就行了

SQL 10Gselect sales,dest,sum(revenue) from test group by cube(sales,dest);

SALESDEST SUM(REVENUE)

---------- ---------- ------------

10000 所有sales的总销售收入

wenzhou9000所有sales在温州的销售收入

hangzhou 1000所有sales在杭州的销售收入

allen7000 allen的所有销售收入

allen wenzhou 7000 allen在温州的销售收入

smith 3000 smith所有的销售收入

smithwenzhou 2000 smith在温州的销售收入

smithhangzhou1000 smith在杭州的销售收入

8 rows selected.

假如不想统计城市这个维度,那么用rollup子句

hangzhou wenzhou

allen70007000

smith1000 20003000

10000

SQL 10Gselect sales,dest,sum(revenue) from test group by rollup(sales,dest)

2;

SALESDEST SUM(REVENUE)

---------- ---------- ------------

allenwenzhou 7000allen在温州的销售收入

allen 7000allen的所有销售收入

smithwenzhou2000smith在温州的销售收入

smithhangzhou 1000smith在杭州的销售收入

smith 3000smith所有的销售收入

10000所有sales的总销售收入

6 rows selected.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航