稍后从表和员工中获取经理

时间:2014-02-20 16:29:36

标签: oracle

我有一张这样的表

NAME -- MANAGER
10 -- 85
85 -- 45
45 -- 52
52 -- null

我想要一个这样的输出,其中经理在层次结构中排在第一位,然后是员工

 NAME -- MANAGER

  52 -- null

  45 -- 52

  85 -- 45

  10 -- 85

任何人都可以帮我做。我在下面做了内连接,但是没有用

select * from TABLEMAIN

 inner join TABLEMAIN t2 ON TABLEMAIN.MANAGER = t2.NAME

 order by TABLEMAIN.NAME

请帮我解决问题

1 个答案:

答案 0 :(得分:2)

可以使用start with和

连接来实现
WITH TABLEMAIN(NAME,MANAGER) AS
    (SELECT 10 ,85 FROM dual UNION ALL
    SELECT 85 , 45 FROM dual UNION ALL
    SELECT 45 ,52 FROM dual UNION ALL
    SELECT 52 ,null FROM dual )
----
-- End of data
----
SELECT * FROM TABLEMAIN
START WITH manager IS NULL
CONNECT BY PRIOR NAME = manager

输出:

NAME MANAGER
52  
45  52
85  45
10  85