select lpad(id,level,'*') from test_tree start with parent=0 connect by prior id=parent;

解决方案 »

  1.   

    10:43:09 SQL> select lpad(' ',level,'*')||id from
    10:43:28   2  test_tree start with id=1 connect by prior id=parent;LPAD('',LEVEL,'*')||ID
    --------------------------------------------------------------------------------
     1
    * 2
    ** 3
    *** 18
    **** 19
    ***** 20
    ** 4
    ** 5
    ** 6
    ** 7
    * 8LPAD('',LEVEL,'*')||ID
    --------------------------------------------------------------------------------
    ** 9
    *** 12
    *** 15
    ** 10
    *** 13
    *** 16
    ** 11
    *** 14
    *** 17已选择20行。已用时间:  00: 00: 00.47
    10:43:33 SQL>
      

  2.   

    10:49:23 SQL> select lpad(id,level+length(id)-1,'*') from test_tree start with p
    arent=0 connect by prior id=parent;LPAD(ID,LEVEL+LENGTH(ID)-1,'*')
    --------------------------------------------------------------------------------
    --------------------
    1
    *2
    **3
    ***18
    ****19
    *****20
    **4
    **5
    **6
    **7
    *8
    **9
    ***12
    ***15
    **10
    ***13
    ***16
    **11
    ***14
    ***17已选择20行。
      

  3.   

    10:47:08 SQL> select lpad(id,level+length(id)-1,'*') from 
    10:47:39   2  test_tree start with id=1 connect by prior id=parent;LPAD(ID,LEVEL+LENGTH(ID)-1,'*')
    -----------------------------------------------------------------------------
    1
    *2
    **3
    ***18
    ****19
    *****20
    **4
    **5
    **6
    **7
    *8LPAD(ID,LEVEL+LENGTH(ID)-1,'*')
    -----------------------------------------------------------------------------
    **9
    ***12
    ***15
    **10
    ***13
    ***16
    **11
    ***14
    ***17已选择20行。已用时间:  00: 00: 00.94
      

  4.   

    非常感谢上面两位。
    SQL> select id,parent from ttree;    ID     PARENT
    ------ ----------
         1          0
         2          1
         3          2
         4          2
         5          2
         6          2
         7          2
         8          1
         9          8
        10          8
        11          8
        12          9
        13         10
        14         11
        15          9
        16         10
        17         11
        18          3
        19         18
        20         19    ID     PARENT
    ------ ----------
        21          0
        22          0
        23         46
        24         21
        25         22
        26         19
        27         22
        28         21
        30         19
        31         24
        32         31
        33         32
        34         33
        35         34
        36         35
        37         36
        38         37
        39         36
        40         38
        41         25
        42         26    ID     PARENT
    ------ ----------
        43         22
        44         23
        45         22
        46         23
        47         2246 rows selected回复人: zmgowin(隐者(龙祖宗)) ( ) 信誉:100  2004-10-20 10:47:00  得分: 0  
    select lpad(id,level+length(id)-1,'*') from test_tree start with 
    parent=0 connect by prior id=parent;
    结果如下:
    SQL> select lpad(id,level+length(id)-1,'*') from test_tree start with
      2  parent=0 connect by prior id=parent;LPAD(ID,LEVEL+LENGTH(ID)-1,'*'
    --------------------------------------
    1
    *2
    **3
    ***18
    ****19
    *****20
    *****26
    ******42
    *****30
    **4
    **5
    **6
    **7
    *8
    **9
    ***12
    ***15
    **10
    ***13
    ***16LPAD(ID,LEVEL+LENGTH(ID)-1,'*'
    ---------------------------------------
    **11
    ***14
    ***17
    21
    *24
    **31
    ***32
    ****33
    *****34
    ******35
    *******36
    ********37
    *********38
    **********40
    ********39
    *28
    22
    *25
    **41
    *27
    *43LPAD(ID,LEVEL+LENGTH(ID)-1,'*'
    ---------------------------------------------
    *45
    *4743 rows selected以上达到预期要求。回复人: bzszp(SongZip) ( ) 信誉:149  2004-10-20 10:49:00  得分: 0  
    10:47:08 SQL> select lpad(id,level+length(id)-1,'*') from 
    10:47:39   2  test_tree start with id=1 connect by prior id=parent;
    结果如下:
    SQL> select lpad(id,level+length(id)-1,'*') from
      2  ttree start with id=1 connect by prior id=parent;LPAD(ID,LEVEL+LENGTH(ID)-1,'*'
    -------------------------------------------
    1
    *2
    **3
    ***18
    ****19
    *****20
    *****30
    *****26
    ******42
    **4
    **5
    **6
    **7
    *8
    **9
    ***12
    ***15
    **10
    ***13
    ***16LPAD(ID,LEVEL+LENGTH(ID)-1,'*'
    ---------------------------------------
    **11
    ***14
    ***1723 rows selected如果将with id=1换成parent=0也能完全得到最终要求的结果。再次感谢:回复人: zmgowin(隐者(龙祖宗))与回复人: bzszp(SongZip)。