SELECT CONVERT(char(7),YEAR_MONTH,120) TIME  INTO #L1 
   FROM 
      ( 
         SELECT DATEADD(MONTH,-NUMBER,GETDATE()) YEAR_MONTH FROM TABLEONE WHERE NUMBER  < 12 
      ) #S  SELECT CONVERT(char(7),TIME,120) TIME,USERNAME,PASSWORD INTO #A FROM TABLETWO SELECT L.TIME,A.USERNAME, A.PASSWORD FROM #L1 L,#A A WHERE L.TIME *= A.TIME ORDER BY L.TIME DESC 

解决方案 »

  1.   

    运行结果: 
    TIME 
            2007-5 
    2007-6 
    2007-7 
    2007-8 
    2007-9 
    2007-10 
    2007-11 
    2007-12 
    2008-1 
    2008-2 
    2008-3 
    2008-4 ----
    如果是上述结果,排序方法如下:select * from tb order by order by left(time,4) desc , cast(substring(time,charindex('-',time)+1,len(time)) as int) desc
      

  2.   

    因为你做convert的时候变成varchar类型了,排序是按字符排序方式进行的。如果要按时间倒序排要再将字段转换成datetime的。
    或者,先做好排序,然后再转换类型。
      

  3.   

    在Select 的时候就已经将时间类型转换成varchar类型了,排序的时候按照varchar排序了
      

  4.   

    把vachar类型转换成日期类型 进行排序。就能按照日期进行 升降排序了
      

  5.   

    因为你做convert的时候变成varchar类型了,排序是按字符排序方式进行的。如果要按时间倒序排要再将字段转换成datetime的。 
    或者,先做好排序,然后再转换类型。