存在层次结构关系的表内字段求和问题?比想象的难!

[复制链接]
查看11 | 回复1 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
请注意数据库的层次结构!!!
desc emp
user_no
number(20) ,
user_name
varchar2(128),
pic_no
number(20),
sales
number(20,2)

关系如下:(请在纸上依据下面的描述画出一个组织结构树)
表内共有n个销售团队, 分n层,根节点为a1
a1 为销售总监,领导 b2,c2,d2;
b2领导b31和b32,c2领导c31和c32, d2领导d31和d32;
b31领导b41和b42,c31领导c41和c42, d31领导d41和d42;
如何使用一个select sum() 如:
select sum(sales) from emp ......
start with user_no= 1 connect by prior user_no = pic_no
来求出b2, c2,d2所领导的团队的销售业绩, 即必须是b2,c2,d2的所有下属销售员(直至叶节点)的业绩之和。
结果应该为:
b2
123456
c2
234567
d2
345678

回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
select substr(path, instr(path, '/', 1, 2) + 1, length(path)), sum(slaes) from (
select nvl(substr(sys_connect_by_path(user_name, '/'), 1, instr(sys_connect_by_path(user_name, '/'), '/', 1, 3) - 1), sys_connect_by_path(user_name, '/')) path, sales
from emp
where level > 1
start with user_no = 1
connect by pic_no = prior user_no
) group by path;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行