当前位置: 代码迷 >> Oracle开发 >> 高手,这个查询结果你可以用一个sql得到吗?解决方法
  详细解决方案

高手,这个查询结果你可以用一个sql得到吗?解决方法

热度:96   发布时间:2016-04-24 07:29:14.0
高手,这个查询结果你可以用一个sql得到吗?
直接上sql
SQL code
create table TEMP_TEST(  salemanager VARCHAR2(50),  deptname    VARCHAR2(50),  vc_region   VARCHAR2(50),  regionscale NUMBER,  quota       NUMBER,  purchase    NUMBER);insert into TEMP_TEST (SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE, QUOTA, PURCHASE)values ('赵六', '销售部A', '安徽', 1, 10000, 1568);insert into TEMP_TEST (SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE, QUOTA, PURCHASE)values ('张三', '销售部B', '北京', 0.6, 5000, 1098);insert into TEMP_TEST (SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE, QUOTA, PURCHASE)values ('李四', '销售部A', '广西', 0.5, 5000, 8850);insert into TEMP_TEST (SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE, QUOTA, PURCHASE)values ('王五', '销售部A', '广西', 0.5, 5000, 7500);insert into TEMP_TEST (SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE, QUOTA, PURCHASE)values ('钱七', '销售部B', '北京', 0.4, 5000, 1146);commit;


结果满足
(
1. 各人、各部门、地区 的 {t.regionscale,t.quota,t.purchase} 
2. 各地区 的 {t.salemanager, t.quota,t.purchase}  
3.各部门的 {t.quota,t.purchase} 
)

也就是如下:

SQL code
SALEMANAGER     DEPTNAME     VC_REGION     REGIONSCALE    QUOTA    PURCHASE  赵六              销售部A      安徽          1             10000     1568  张三              销售部B      北京               0.6             5000      1098  钱七              销售部B      北京               0.4              5000      1146  李四              销售部A      广西               0.5              5000      8850  王五              销售部A      广西               0.5              5000      7500  赵六                       安徽                                1000       1568  张三,钱七                  北京                                10000      2244  李四,王五                  广西                                10000      16350                       销售部A                                       20000      18168                   销售部B                                       10000       2244



------解决方案--------------------
select SALEMANAGER, 
DEPTNAME, 
VC_REGION, 
REGIONSCALE,
sum( QUOTA), sum(PURCHASE)
from TEMP_TEST
GROUP BY GROUPING SETS((SALEMANAGER, DEPTNAME, VC_REGION, REGIONSCALE),(VC_REGION),(DEPTNAME))
------解决方案--------------------
select * from temp_test
union all
select wmsys.wm_concat(tt.salemanager) salemanager,
null as deptname,
tt.vc_region,
null as regionscale,
sum(tt.quota) quota,
sum(tt.purchase) purchase
from temp_test tt
 group by tt.vc_region
 union all
select null as salemanager,
tt.deptname,
null as vc_region,
null as regionscale,
sum(tt.quota) quota,
sum(tt.purchase) purchase
from temp_test tt
 group by tt.deptname;
  相关解决方案