select dep1,dep_name, (select sum(数量) from 数据表 where dep1 in (select dep1 from 部门编码表 start with dep1= 部门编码表.dep1 connect by prior dep1=superid) ) as 数量 from 部门编码表
select A.DEP1,MAX(DEP_NAME) as DEP_NAME,SUM(B.数量) as 数量 FROM (select 部门编码.*,connect_by_root(dep1) subid from 部门编码 connect by prior superid=dep1) A,数据表 B WHERE A.SUBID=B.DEP1 GROUP BY A.DEP1
这个connect_by_root是要拿最底层的DEP是吗
这个函数本身是获取根节点的 我的树形是反向建立的,获取出的根节点就是最底层的dep了
谢谢 搞定了,这个思路是对的,我也考虑过这个根节点的方便只考虑了正向,然后想再用connect by 去查询 结果没搞出来
字段 省、市、县、数值
select 省,市,县,sum(数值)
from T
group by rollup(省,市,县)
order by 省,市,县
oracle 中rollup本身就有分层统计的功能
(select sum(数量) from 数据表
where dep1 in (select dep1 from 部门编码表
start with dep1= 部门编码表.dep1
connect by prior dep1=superid)
) as 数量
from 部门编码表
FROM
(select 部门编码.*,connect_by_root(dep1) subid
from 部门编码
connect by prior superid=dep1) A,数据表 B
WHERE A.SUBID=B.DEP1
GROUP BY A.DEP1
这个connect_by_root是要拿最底层的DEP是吗
我的树形是反向建立的,获取出的根节点就是最底层的dep了