mssql -递归查询组织机构某节点下所有及最底层,重点:按顶级分组
0.原数据
1.查询某一节点下的所有节点
;WITH OrganizeTree AS ( SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID FROM aapbu.Organizational
--WHERE ParentOrganizationalID = '1001'
UNION ALL
SELECT ot.OrganizationalName, ot.ParentOrganizationalID, ot.OrganizationalID from OrganizeTree
JOIN aapbu.Organizational ot on OrganizeTree.OrganizationalID = ot.ParentOrganizationalID
)
SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID FROM OrganizeTree
2.查询某一节点下的最底层 节点
;WITH OrganizeTree AS ( SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID FROM aapbu.Organizational
--WHERE ParentOrganizationalID = '1001'
UNION ALL
SELECT ot.OrganizationalName, ot.ParentOrganizationalID, ot.OrganizationalID from OrganizeTree
JOIN aapbu.Organizational ot on OrganizeTree.OrganizationalID = ot.ParentOrganizationalID)
,leaf as (
select l.OrganizationalName,l.ParentOrganizationalID,l.OrganizationalID from OrganizeTree l
WHERE NOT EXISTS(SELECT c.OrganizationalName, c.ParentOrganizationalID, c.OrganizationalID FROM OrganizeTree c WHERE l.OrganizationalID = c.ParentOrganizationalID)
)
SELECT * FROM leaf
3.应用重点:查询根节点下递归子节点,并且按根节点分组!
;WITH OrganizeTop AS (
SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID,IsDisable FROM aapbu.Organizational
WHERE IsDisable=0 and OrganizationalID in(select OrganizationalID from aapbu.Organizational where ParentOrganizationalID
=(select OrganizationalID FROM aapbu.Organizational where ParentOrganizationalID ='' ) and IsDisable=0)
)
SELECT ROW_NUMBER() over(order by OrganizationalID) as row,OrganizationalName, ParentOrganizationalID, OrganizationalID,IsDisable,'' ppd into #OrganizeDemo FROM OrganizeTop
declare @count int;
declare @i int;
declare @topparent nvarchar(50);
select @count = COUNT(1) from #OrganizeDemo;
set @i = 1;
while (@count >= @i)
begin
select @topparent = OrganizationalID from #OrganizeDemo where [row] = @i;
;WITH OrganizeTree AS (
SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID,IsDisable FROM aapbu.Organizational
WHERE IsDisable=0 and OrganizationalID=@topparent
UNION ALL
SELECT ot.OrganizationalName, ot.ParentOrganizationalID, ot.OrganizationalID,ot.IsDisable from OrganizeTree
JOIN aapbu.Organizational ot on OrganizeTree.OrganizationalID = ot.ParentOrganizationalID
where ot.IsDisable=0
)
SELECT OrganizationalName, ParentOrganizationalID, OrganizationalID,IsDisable,@topparent as ppd into #OrganizeDemo1 FROM OrganizeTree
if not exists(select * from tempdb..sysobjects where id=object_id('tempdb..#OrganizeDemoGroup'))
SELECT * into #OrganizeDemoGroup FROM #OrganizeDemo1
ELSE
insert into #OrganizeDemoGroup( OrganizationalName, ParentOrganizationalID, OrganizationalID,IsDisable,ppd)
SELECT * FROM #OrganizeDemo1
Drop table #OrganizeDemo1;
set @i = @i + 1;
end
Drop table #OrganizeDemo;
select * FROM #OrganizeDemoGroup
Drop table #OrganizeDemoGroup;
PS:用了临时表完成此功能,如果有更好的,请大神指点一二,谢谢
mssql -递归查询组织机构某节点下所有及最底层,重点:按顶级分组相关推荐
- sql -递归查询组织机构某节点下所有及最底层
1. 表 1.查询某一节点下的所有节点 WITH OrganizeTree AS ( SELECT name, pid, wid FROM Organize WHERE pid = '2362' UN ...
- java递归查询分类及分类下所有子分类
该案例是实际开发中运用,java递归查询分类及分类下所有子分类. 代码走起: 1.jsp页面布局样式这里不再介绍,js业务逻辑展示分类树形结构如下: /*** 商品分类操作*//*** 初始化*/ $ ...
- mysql 递归查询所有子节点(子部门)返回id集合
一.导读 当我们查询所有的当前部门下以及当前部门下面的所有子部门,需要就需要我们获取所有当前节点和子节点的id,这里使用mysql的递归查询来实现.查找给定分类编码查找分类及其所有子类,包含子类的子类 ...
- oracle获取所有子节点,oracle递归查询所有子节点
Q4:Oracle通过递归查询父子兄弟节点方法示例 前言 说到Oracle中的递归查询语法,我觉得有一些数据库基础的童鞋应该都知道,做项目的时候应该也会用到,下面本文就来介绍下关于Oracle通过递归 ...
- TreeView对象选择某节点下所有节点与子节点
// // // 函数: of_deselectall // // 属性: public // // 参数: long al_handle // // 返回: integer // // 功能: ...
- 根据子节点递归查询所有父节点
有个需求,需要根据给定的子节点向上递归查询所有父节点,网上查找了一些,但是都不是很满意,有的是需要用到全局变量定义存储列表,但是会有并发问题,然后自己手写一个 @Testvoid contextLoa ...
- MySQL递归查询所有下级节点
MySQL递归查询所有下级节点. 先上SQL后来讲解其中的含义. select id from (select t1.id,t1.inviteId,if(find_in_set(inviteId, @ ...
- 【python之操作注册表】Python删除注册表节点下的值
[python操作注册表]Python删除注册表节点下的值 背景 本来是别的平台的一个bug,以为自己去沟通然后让他们修就好了,结果又是这样别人的坑自己来填.主要是在卸载的时候要删除注册表下的所有节点 ...
- 地狱拷问:上万个节点下如何实现?
最近不少读者留言提到"面试造火箭"现象.的确,现在进大厂的门槛越来越高,动不动就要求大规模 / 分布式 / 微服务的开发经验,而且面试的时候,甚至会深入到源码的层面发问.比如:如果 ...
最新文章
- 独家 | 每个业务分析专家应具备的9个关键技能
- 认识Linux设备驱动模型和Kobject
- WPF 3d坐标系和基本三角形
- python中readlines函数例子_Python的函数readlines(n)行为
- Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——习题4-5
- 【Python3 SelectKBest 调用personer出现的错误】
- PAT乙级 1027 打印沙漏
- 14-Scala之隐式转换
- Linux 命令(70)—— size 命令
- 贝叶斯集锦:从MC、MC到MCMC
- 3. static file process
- 机器学习笔记(二十):逻辑回归(2)
- 使用VUE分分钟写一个验证码输入组件
- 008/160 CrackMe Andrénalin #1
- 高程(DEM) ASCII数据获取
- 使用JS代码将steam喜加一的免费游戏删除。
- 雷军,扎克伯格,Linus 等巨佬的办公桌
- 功能最强大的编辑器——vi
- c语言日期计算器程序代码,用C语言写一个日期计算器
- 红米手机4A怎么样刷入开发版获得ROOT权限