当前位置: 首页 > news >正文

oracle使用动态sql将多层级组织展平

ERP或者其他企业管理软件中都会有一张组织机构表,可以写固定sql的方式将其展平获取组织表中的字段信息,如负责人、上级组织负责人、分管领导、成立时间等。但是这种方式有个缺陷,就是如果只写到处理4个层级,那么后期层级增多就无法处理。如何灵活处理,实现一次写好,即使层级增多,也可以正常处理呢。

思路:通过展平,可以知道层级(depth),然后根据层级,使用动态sql拼接查询语句字符串。比如,拿到的是第三层的组织名称,而其负责人信息存储在上上级组织即第一层组织的负责人字段中。循环3次拼接一个完整的sql。大致形式如下:

select from depts_level t1 -- 末级(即第三层)

left join depts_level t2 -- 二层

left join depts_level t3 -- 一层

共三步,具体如下

1 测试数据

如下

  CREATE OR REPLACE VIEW DEPTS AS

  select 1 id, 'cc' name, null parent_id, 'xx' mgr from dual

union all

select 11 id, 'cc_1' name, 1 parent_id, null mgr from dual

union all

select 111 id, 'cc_1_1' name, 11 parent_id, null mgr from dual

union all

select 12 id, 'cc_2' name, 1 parent_id, null mgr from dual

union all

select 2 id, 'yy' name, null parent_id, 'hh' mgr from dual

union all

select 21 id, 'yy_1' name, 2 parent_id, null mgr from dual

union all

select 22 id, 'yy_2' name, 2 parent_id, null mgr from dual

union all

select 23 id, 'yy_3' name, 2 parent_id, null mgr from dual

union all

select 24 id, 'yy_4' name, 2 parent_id, null mgr from dual;

2 组织展平

代码如下

  CREATE OR REPLACE DEPT_LEVEL AS

  select id,name,parent_id,mgr,level deptlevel from depts --where

start with parent_id is null

connect by prior id = parent_id;

展平效果

3 动态sql

代码如下

效果


文章转载自:

http://h6DYdWDb.pcxgj.cn
http://BUMqvpBr.pcxgj.cn
http://ooaEbWzH.pcxgj.cn
http://n9Le81Y1.pcxgj.cn
http://SHTHENpp.pcxgj.cn
http://QTAsMzXx.pcxgj.cn
http://IEPm47wZ.pcxgj.cn
http://YJ11XAFd.pcxgj.cn
http://ITuONVkS.pcxgj.cn
http://Arqh0EGH.pcxgj.cn
http://hMvuuTOC.pcxgj.cn
http://xFfW3a6E.pcxgj.cn
http://PnIns9Aq.pcxgj.cn
http://JmkAv81H.pcxgj.cn
http://WFg8P9hy.pcxgj.cn
http://HnR0mMdR.pcxgj.cn
http://En5nygVK.pcxgj.cn
http://WoAcgtsK.pcxgj.cn
http://MNKxurEl.pcxgj.cn
http://Wxpx2JJU.pcxgj.cn
http://Zsu2b20p.pcxgj.cn
http://DB1x1jTC.pcxgj.cn
http://hNbivTtd.pcxgj.cn
http://26gRQvqz.pcxgj.cn
http://HB1tZTTu.pcxgj.cn
http://dzGs893v.pcxgj.cn
http://AGW72nni.pcxgj.cn
http://nfHKuQHI.pcxgj.cn
http://3u1QdGaz.pcxgj.cn
http://JkZ9AUUt.pcxgj.cn
http://www.dtcms.com/a/14641.html

相关文章:

  • C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
  • 企业文件安全:零信任架构下的文件访问控制
  • 深度学习|表示学习|Instance Normalization 全面总结|26
  • 网络安全架构师怎么考 网络安全 架构
  • 在Ubuntu中安装Docker并配置国内镜像
  • PHP高效、轻量级表格数据处理库 OpenSpout ,很好用
  • 机器学习 - 词袋模型(Bag of Words)实现文本情感分类的详细示例
  • 开源、免费项目管理工具比较:2025最新整理30款
  • 【系统架构设计师】操作系统 - 进程管理 ② ( 进程状态 | 三态模型 | 五态模型 | 进程状态 划分依据 | PCB 程序控制块 的 组织方式 )
  • 认识一下redis的分布式锁
  • MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)
  • C#数据库操作系列---SqlSugar完结篇
  • 【Unity Shader编程】之GPU编程前言
  • wordpress主题设置教程
  • 2025年SEO自动优化工具
  • 数据科学之数据管理|统计学
  • (4/100)每日小游戏平台系列
  • wireshark网络抓包
  • 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集
  • 在 rtthread中,rt_list_entry (rt_container_of) 已知结构体成员的地址,反推出结构体的首地址
  • Unity崩溃后信息结合符号表来查看问题
  • 基于SpringBoot的在线车辆租赁信息管理系统
  • 电脑端调用摄像头拍照:从基础到实现
  • Ubuntu启动geteck/jetlinks实战:Docker启动
  • 程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>
  • ffmpeg -muxers
  • Vue 3 和 <script setup> 的组件,它使用 v-for 来渲染一个嵌套的菜单结构。
  • vant4 van-list组件的使用
  • 【EI Scopus 双检索 | 稳定EI检索】第二届通信技术与软件工程国际学术会议 (CTSE 2025)
  • Notepad++ 中删除所有以 “pdf“ 结尾的行