select EVT.* ,DEV.DNM, DEV.AI  from DEV inner join EVT 
ON EVT.DI =DEV.DI where EVT.TM >'2013-7-2 9:27:58' 
order by TM desc,case when EVT.DK ='false' then 1 else 0 end desc
表里有两个字段, 一个是TM(DATE),另一个是DK(bool )
首先按时间  降序。
然后 DK为false 的要排在前面。

解决方案 »

  1.   

    select EVT.* ,DEV.DNM, DEV.AI  from DEV inner join EVT 
    ON EVT.DI =DEV.DI where EVT.TM >'2013-7-2 9:27:58' 
    order by TM desc,evt.dk
      

  2.   


    --> 测试数据:@T
    declare @T table([TM] datetime,[DK] bit)
    insert @T
    select '2013-02-01',0 union all
    select '2013-01-29',1 union all
    select '2013-07-12',0 union all
    select '2013-02-04',1 union all
    select '2013-02-01',1select * from @T ORDER BY [TM] DESC,[DK] 
    --利用 RecordSet 将 bit 字段中的数据取出来后,它是 boolean 类型0(false)或1(true).
    /*
    TM                      DK
    ----------------------- -----
    2013-07-12 00:00:00.000 0
    2013-02-04 00:00:00.000 1
    2013-02-01 00:00:00.000 0
    2013-02-01 00:00:00.000 1
    2013-01-29 00:00:00.000 1
    */
      

  3.   

    可能我没说清楚, (DK) bool 是要置顶的效果,如果有false 就是显示在最前面的,然后才是按时间排序。
      

  4.   


    select EVT.* ,DEV.DNM, DEV.AI  from DEV inner join EVT  ON EVT.DI =DEV.DI where EVT.TM >'2013-7-2 9:27:58'  order by dk asc,evt.TM desc