Sha*_*ngh 5 sql snowflake-cloud-data-platform
我正在寻找一个查询来递归地获取特定经理下的所有员工的姓名。
电磁脉冲表
EMP_ID EMP_NAME MANAGER_ID
1 A 3
2 B 3
3 C 4
4 D 5
5 E NULL
Run Code Online (Sandbox Code Playgroud)
询问:
SELECT EMP_ID, EMP_NAME, MANAGER_ID FROM EMP_TABLE WHERE MANAGER_ID=4;
Run Code Online (Sandbox Code Playgroud)
该查询的输出:
EMP_ID EMP_NAME MANAGER_ID
3 C 4
Run Code Online (Sandbox Code Playgroud)
预期输出:
EMP_ID EMP_NAME MANAGER_ID
1 A 3
2 B 3
3 C 4
Run Code Online (Sandbox Code Playgroud)
需要使用CONNECT BY来处理表中的分层数据:
https://docs.snowflake.com/en/sql-reference/constructs/connect-by.html
SELECT EMP_ID, EMP_NAME, MANAGER_ID FROM EMP_TABLE
START WITH MANAGER_ID=4
CONNECT BY MANAGER_ID = prior EMP_ID
ORDER BY EMP_ID;
+--------+----------+------------+
| EMP_ID | EMP_NAME | MANAGER_ID |
+--------+----------+------------+
| 1 | A | 3 |
| 2 | B | 3 |
| 3 | C | 4 |
+--------+----------+------------+
Run Code Online (Sandbox Code Playgroud)