select * from table1 order by decode(time_to,'0-0','999',time_to) desc;

解决方案 »

  1.   

    让0-0左边补0进行排序,这样就可以了!
    select * from table1 order by lpad(time_to,7,'9') ;
      

  2.   

    select * from table1 order by decode(time_to,'0-0','999',time_to) desc;
      

  3.   

    对time_to = '0-0'做一下转换就好了^_^[code]
    20:22:42 SQL> select * from t;       PID TIME_FROM            TIME_TO
    ---------- -------------------- --------------------
             8 2002-10              0-0
             8 2001-02              2002-09
             7 2001-10              2003-10
             7 2001-02              2002-09Elapsed: 00:00:00.01
    20:22:49 SQL> select *
    20:22:55   2  from t
    20:22:56   3  order by decode(time_to,'0-0',null,time_to) desc nulls first
    20:23:17   4  /       PID TIME_FROM            TIME_TO
    ---------- -------------------- --------------------
             8 2002-10              0-0
             7 2001-10              2003-10
             8 2001-02              2002-09
             7 2001-02              2002-09Elapsed: 00:00:00.00
    20:23:17 SQL>
    [/code]