是否可以为表中的许多行生成"连接"并将它们全部加起来.我有一张桌子
person boss
---------------
person1 NULL
person2 person1
person3 person2
Run Code Online (Sandbox Code Playgroud)
我想得到一张桌子
boss is_boss_of
---------------
person1 person2
person1 person3
person2 person3
Run Code Online (Sandbox Code Playgroud)
我想通过表达式为桌面人物老板中的每个人建立连接?有什么方法可以做到吗?
说到总和我想到这样的事情
SELECT CONNECT_BY_ROOT person as boss, person as is_boss_of
FROM table1
START WITH boss = person1
CONNECT BY PRIOR Empno = Mgr;
Union
SELECT CONNECT_BY_ROOT person as boss, person as is_boss_of
FROM table1
START WITH boss = person2
CONNECT BY PRIOR Empno = Mgr;
Union
...
and so on
Run Code Online (Sandbox Code Playgroud)
更新
看到您的更新后,您只需要放弃START WITH.
结束更新
CONNECT_BY_ROOT是您正在寻找的
这个说法
SELECT distinct RootBoss, Person FROM (
with employee as
(
Select 1 person , null boss from Dual
UNION Select 2 , 1 from dual
UNION Select 3 , 2 from dual
)
SELECT CONNECT_BY_ROOT boss RootBoss, person
FROM employee connect_by
connect by prior person = boss
ORDER BY person
) t
WHERE ROOTBOSS is not null
ORDER BY
RootBoss, Person
Run Code Online (Sandbox Code Playgroud)
输出
ROOTBOSS PERSON
---------------------- ----------------------
1 2
1 3
2 3
Run Code Online (Sandbox Code Playgroud)
添加SUMS和GROUPS非常简单
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |