解决方案 »

  1.   

    未测试,计算各节点的起止日期SELECT A.ID,MAX(A.NAME) NAME,MIN(B.STARTTIME) STARTTIME,MAX(B.ENDTIME) ENDTIME
    from (select T.*,CONNECT_BY_ROOT(ID) SID from T
        CONNECT BY PRIOR PID=ID) A,T B
    WHERE A.SID=B.ID
    GROUP BY A.ID
      

  2.   

    也可以这样写,这样就不需要连接表了,速度应该更快一点
    SELECT ID,MAX(NAME) NAME,MIN(S) STARTTIME,MAX(E) ENDTIME
    from (select T.*,CONNECT_BY_ROOT(STARTTIME) S,CONNECT_BY_ROOT(ENDTIME) E
        from T
        CONNECT BY PRIOR PID=ID) A
    GROUP BY ID
      

  3.   


    谢谢斑斑指导。这两天我集中精力把相关的业务优化了一下,效率有相当大的提升。基本和斑斑的思路一致。PS:现在CSDN的人气好像不行啊。。