我想在没有经理的经理下选择最老的员工DOB。 的修改 我希望将所有员工组成一名高级经理(在经理上为空)并获得该组的第一个DOB
数据看起来像。
employe_ID DOB manager
10001 1-Jan-1988 (NULL)
10010 5-Feb-1989 10001
10100 8-Mar-1990 10010
90001 1-Jan-1987 (NULL)
90010 5-Feb-1986 90001
90100 8-Mar-1987 90010
我想要像
这样的数据employe_ID DOB
10001 1-Jan-1988
10010 1-Jan-1988
10100 1-Jan-1988
90001 5-Feb-1986
90010 5-Feb-1986
90100 5-Feb-1986
由于
答案 0 :(得分:0)
使用connect by prior, connect_by_root
和MIN(DOB) over partition by
select employee_id, MIN(DOB) over (partition by topManager) MINDOBperManager, topManager
from (
select t.*, connect_by_root employee_id topManager
from t
start with manager is null
connect by prior employee_id = manager) t1
<强>输出强>
EMPL MINDOBPERMANAGER TOPMANAGER
----- ------------------- ----------
10001 01-01-1988 00:00:00 10001
10010 01-01-1988 00:00:00 10001
10100 01-01-1988 00:00:00 10001
90001 05-02-1986 00:00:00 90001
90010 05-02-1986 00:00:00 90001
90100 05-02-1986 00:00:00 90001