求SQL语句递归
TABLE  A
字段
工程NO  ......  PRENO    AFTERNO
1                      2
2             1        3
3             2        4
4             3        5
......
根据条件,可知道当前工程NO,想知道它前面几个工程,后面还有几个工程,尤其是最后一个工程,因为要取出总完工日期
不知道说明白没有?

解决方案 »

  1.   

    不知道是不是要这样的效果
    SQL> select * from a;PROJECT_NO ORDER_DATE      PRE_NO   AFTER_NO
    ---------- ----------- ---------- ----------
             1                                 2
             2                      1          3
             3                      2          4
             4                      3          5
             5                      4          6
    select t.*,level from a t
    where level > 1
    start with project_no = 3 
    connect by project_no = prior pre_noSQL> 
      5  /PROJECT_NO ORDER_DATE      PRE_NO   AFTER_NO      LEVEL
    ---------- ----------- ---------- ---------- ----------
             2                      1          3          2
             1                                 2          3select t.*,level from a t
    where level > 1
    start with project_no = 3 
    connect by prior project_no = pre_noSQL> 
      5  /PROJECT_NO ORDER_DATE      PRE_NO   AFTER_NO      LEVEL
    ---------- ----------- ---------- ---------- ----------
             4                      3          5          2
             5                      4          6          3
      

  2.   

    select * from a connect by prior AFTERNO=PRENO start with 工程NO=yourNO
      

  3.   

    prior 是什么意思?教给我撒!
    waterfirer(水清),我很佩服你.我看你在别的帖子上的SQL,都很经典!
      

  4.   

    不会吧,我才刚学sql一个月啊,好多东西都是现学现卖呢,上面的兄弟才是高手呢。
    不过还是谢谢你啊,自我陶醉中...... :)我用的都是加prior的,不加prior不知道有什么结果,可能connect by就不起作用了吧,不太清楚。
      

  5.   

    duanzilin(寻) 正解,waterfirer(水清)不对prior AFTERNO=PRENO 是什么呀,看不懂,为什么是AFTERNO=PRENO??不解
      

  6.   

    to henghowzc(等待)
    如果是PRENO=AFTERNO就是反向查询了,prior放在那边就是优先查询谁啊,其实就是向上查询和向下查询的意思。