业务场景:报表统计时需要根据某个用户组织架构中最上层的两级部门分组
方案一:扩展表结构数据静态化(现有数据结构要变更)
方案二:用递归查询出组织架构数据
最终解决方案:
--巧用CONNECT_BY_ROOT与start with ... connect by prior ...
select level ln,
organ_id,
parent_id,
lpad(' ', 2*(level - 1)) || organ_name tree_path,
SYS_CONNECT_BY_PATH(organ_name, '@') full_path,
CONNECT_BY_ROOT(organ_name) dept1,
replace(SYS_CONNECT_BY_PATH(case when level=2 then organ_name else '' end , '@@'),'@@','') dept2,
replace( SYS_CONNECT_BY_PATH(case when level=3 then organ_name else '' end , '@@'),'@@','') dept3,
replace( SYS_CONNECT_BY_PATH(case when level=4 then organ_name else '' end , '@@'),'@@','') dept4
from t_organ
start with parent_id ='rootId'
connect by prior organ_id = parent_id;
效果如下:

本文介绍了一种在报表统计中对用户组织架构进行高效分组的方法,利用SQL的CONNECT_BY_ROOT与SYS_CONNECT_BY_PATH函数,实现从根节点开始递归查询所有子部门,巧妙地获取最上层的两级部门信息。
416

被折叠的 条评论
为什么被折叠?



