select * from 产品零部件表
order by '0000'+replace(productNo,'-','-0000')

解决方案 »

  1.   

    To CrazyFor(fan) 
       确实很见效! 已经能够按深度排下去。
    还有一点不足,就是当第一级深度中零件数目高于几十个时
    就会出现:
        1
        10
        1-1
        1-2
        1-2-1
          ...
        2
        20
        2-1
    也就是那10美有出现在 9之后,这个问题,我们再思考一下
      

  2.   

    select * from 产品零部件表
    order by '0000'+replace(productNo,'-',' 0000')
    再试试,最彻底的办法是保证-后的长度一样。
      

  3.   

    select * from 产品零部件表
    order by replace(productNo,'-','          -')
    再试试,最彻底的办法是保证-后的长度一样。
      

  4.   

    对于这种分级的东东,最好用olap.
      

  5.   

    其实可以将[结点链]拆分为两个字段:Nodeid、Father。其中Nodeid为递增,在全表中唯一值,Father记录其父结点号即父记录的Nodeid值。再通过增加一Index来区分同级长幼关系。这样可以无限级别扩充的,十分方便有效。Nodeid    Father    Name             Index
    1         0         产品零件树       1  
    2         1         B类              2 
    3         2         B-1产品          1
    4         1         A类              1
    5         2         B-2产品          2SELECT * FROM TABLE_NAME ORDER BY Father,Index
    1 产品零件树   1
    4 A类          1
    2 B类          2
    3 B-1产品      1
    5 B-2产品      2
      

  6.   

    To CrazyFor(fan) 
       我给你发留言了,请看