2014-02-14 29 views
0

有谁知道一种方法来知道CONNECT BY的深度吗?例如,如果我有;从...开始....通过先前连接

PARENT_ID PARENT_KEY CHILD_ID CHILD_KEY 
1   BOB   2   CHRIS 
1   BOB   3   TODD 
2   CHRIS  4   JON 
2   CHRIS  5   ALF 
5   ALF   6   GERARD 
5   ALF   7   MIKE 
3   TODD  8   ANN 
3   TODD  9   FRED 

克里斯深度为3和托德的深度是2,我怎么会发现克里斯和托德的深度编程哪里; ;

WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID

对不起,我太傻了......这里是为那些谁拥有大脑的失误在以后的答案START

SELECT 
PARENT_KEY 
, MAX(LEVEL) AS DEPTH 
FROM TIMELINE_CONFIG 
START WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID 
GROUP BY PARENT_KEY 

回答

4

可以使用LEVEL伪列:

SELECT ..., LEVEL, ... 
FROM ... 
+0

谢谢你的回答,解决了我的问题〜;) – Vito

0

对不起,我太傻了......这里是为那些谁拥有大脑的失误在以后的答案;

SELECT 
PARENT_KEY 
, MAX(LEVEL) AS DEPTH 
FROM TIMELINE_CONFIG 
START WITH PARENT_KEY = 'BOB' CONNECT BY PRIOR CHILD_ID = PARENT_ID 
GROUP BY PARENT_KEY