首页 > 其他分享 >【泛微E9】查询部门的部门层级以及所有上级部门

【泛微E9】查询部门的部门层级以及所有上级部门

时间:2024-09-25 09:23:23浏览次数:8  
标签:INDEX 上级部门 id SUBSTRING LENGTH E9 path NULL 泛微

效果图如下:

field1:一级部门
field2:二级部门
field3:三级部门
field4:四级部门
field5:五级部门
field6:六级部门

创建视图,view_bmcjpath
视图定义如下:

WITH RECURSIVE department_tree (id, DEPARTMENTMARK, supdepid, depth, path) AS (  
    -- 初始化查询(非递归部分)  
    SELECT     
        id,     
        DEPARTMENTMARK,     
        supdepid,    
        1 AS depth,    
        CAST(id AS CHAR(200)) AS path    
    FROM hrmdepartment    
    WHERE canceled IS NULL OR canceled <> 1  
    UNION ALL  
    -- 递归查询部分  
    SELECT     
        D.id,    
        D.DEPARTMENTMARK,     
        D.supdepid,    
        dt.depth + 1 AS depth,     
        CONCAT(dt.path, ',', D.id) AS path    
    FROM hrmdepartment D     
    JOIN department_tree dt ON D.supdepid = dt.id    
    WHERE D.canceled IS NULL OR D.canceled <> 1  
),  
ranked_departments AS (  
    SELECT     
        *,    
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY depth DESC) AS rn    
    FROM department_tree    
)  
-- 选择每个id对应depth最大的记录,并应用字段选择逻辑  
SELECT     
    id,      
    DEPARTMENTMARK,      
    supdepid,
	depth,
	path,
    SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 1), ',', -1) AS field1,      
    IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 1, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 2), ',', -1), NULL) AS field2,    
    IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 2, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 3), ',', -1), NULL) AS field3,    
    IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 3, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 4), ',', -1), NULL) AS field4,    
    IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 4, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 5), ',', -1), NULL) AS field5,    
    IF(LENGTH(path) - LENGTH(REPLACE(path, ',', '')) >= 5, SUBSTRING_INDEX(SUBSTRING_INDEX(path, ',', 6), ',', -1), NULL) AS field6    
FROM ranked_departments    
WHERE rn = 1  

标签:INDEX,上级部门,id,SUBSTRING,LENGTH,E9,path,NULL,泛微
From: https://www.cnblogs.com/oeuvres/p/18430136

相关文章

  • 企业数字化-销售数字化看板项目(Axure9)
              ......
  • 4路同步AD模拟量采集卡800K采样频率—PCIe9757
    阿尔泰科技概述:信息社会的发展,在很大程度上取决于信息与信号处理技术的先进性。数字信号处理技术的出现改变了信息与信号处理技术的整个面貌,而数据采集作为数字信号处理的必不可少的前期工作在整个数字系统中起到关键性、乃至决定性的作用,其应用已经深入到信号处理的各个领域......
  • Springboot共享单车管理系统93je9--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着城市化进程的加速和绿色出行理念的普及,共享单车作为一种便捷、环保的出行方式,迅速在城市中普及开来。然而,随着共享单车数量的激增......
  • 【CTF MISC】XCTF GFSJ1086 [简单] 简单的base编码 Writeup(Base64编码+循环解码+Base9
    [简单]简单的base编码你懂base编码吗?工具在线BASE92编码解码:https://ctf.bugku.com/tool/base92解法Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUpUVmpBeFYySkVUbGhoTVVwVVZtcEJlRll5U2tWVWJHaG9UVlZ3VlZadGNFSmxSbGw1VTJ0V1ZXSkhhRzlVVmxaM1ZsW......
  • dfs 验证搜索二叉树——leetcode98
    代码来自leetcode官方一开始我自己写这个代码时只注意当前节点是否会存在空指针,并没有注意到他的孩子节点也有可能为空,绕了我好久。。。。。。/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;......
  • FNCE90087 Minor ESG scoring framewor
    MinorAssignment2024- FNCE90087DueSeptember3rd 11:59pmDescriptionofAssignment:Therearetwopartstothisassessmentdescribedindetailbelow.InPart1youarerequiredtocreateanESGscoringframeworkinlinewiththeResponsibleInvestment......
  • 数据结构:(LeetCode965)单值二叉树
     一:定义如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回false。示例1:输入:[1,1,1,1,1,null,1]输出:true示例2:输入:[2,2,2,5,2]输出:false 提示:给定树的节点数范围是 [1,100]。每个节点的值都是......
  • 泛微ecology9 ModeDateService 存在SQL注入漏洞
    一、漏洞介绍泛微e-cology是⼀款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。泛微e-cology9ModeDateService接口存在SQL注入漏洞。二、影响版本泛微ecology9三、网络测绘fofa:app="泛微-协同商务系统"hunter:app.name=="......
  • [poc] hw情报-泛微 e-cology v10 远程代码执行漏洞
    漏洞介绍 (poc下载地址见最后)  泛微披露了e-cology远程代码执行漏洞。该漏洞允许攻击者通过e-cology-10.0前台获取管理员访问令牌,然后利用JDBC反序列化,实现远程代码执行。漏洞描述  通过/papi/passport/rest/appThirdLogin接口获取管理员账号票据,根据该票据获取访问令牌......
  • 代码随想录算法训练营第 51 天 |LeetCode99岛屿数量 LeetCode100.岛屿的最大面积
    代码随想录算法训练营Day51代码随想录算法训练营第51天|LeetCode99岛屿数量LeetCode100.岛屿的最大面积目录代码随想录算法训练营前言LeetCode200岛屿数量LCR105.岛屿的最大面积一、广度优先搜索基础1、用队列实现2、代码框架:二、卡码网99岛屿数量(LeetCode......