sql - SQL 递归查询以查找缺少级别的经理下属
问题描述
考虑下Associate
表:
Id | Name | ManagerId
---+-------+------------
1 | A | Null
2 | B | 1
3 | C | 2
4 | D | 3
5 | E | 3
6 | F | 3
这里有 CEO (A)、经理 (B)、团队负责人 (C) 和团队成员 (D, E, F)。
另一个表 Registration 包含已注册保险的员工:
Id | Number of Family Members
---+--------------------------
3 | 3
4 | 2
6 | 2
我需要一个递归查询来获取CEO下的所有注册员工,前提是一些下属还没有注册。
解决方案
根据您的输入,查询是。
; WITH recursive_CTE (id,name,MANAGERID,CEONAME,CEO)
AS(
SELECT ID,name,MANAGERID,name ,ID FROM ASSOSIATETABLE WHERE MANAGERID IS NULL
UNION ALL
SELECT B.ID,B.name,B.MANAGERID,A.CEONAME,A.CEO FROM recursive_CTE A
INNER JOIN ASSOSIATETABLE B ON A.ID=B.ManagerID
)
SELECT * FROM recursive_CTE
WHERE ID NOT IN (SELECT ID FROM Registration )
AND MANAGERID IS NOT NULL
结果中需要 CEO,请删除“AND MANAGERID IS NOT NULL”
推荐阅读
- c++ - 将 Go 二进制文件加载到内存中并从 C++ 运行
- ios - 应用商店连接上的活动选项卡消失了
- reactjs - 根据页面加载时收到的道具处理条件
- javascript - https 获取请求上的 ENOTFOUND 问题
- javascript - 悬停元素Javascript时隐藏元素
- python - Altair/Streamlit 未读取多线图的列名
- wpf - WPF:尝试在子元素(ProgressBar)上使用模板绑定来绑定到父元素(按钮)的附加属性
- visual-studio - VS Code 一直在 Chromium 而不是 Chrome 中打开代码
- ios - 在 Xamarin 中的 iCloud 中存储文本文件
- c - 切换二叉树子树 SIGSEV