表中数据,有时间字段tm,数量num字段,num是大于或等于0的,现在就是想把num等于0的全放在排序的最后边,num不等于0的按时间tm降序排列,sql select 查询语句怎么写???

解决方案 »

  1.   

    select * from tb order by (case when num=0 then 1 else 0 end),tm desc 
      

  2.   


    select * from tb order by (case when num=0 then 0 else 1 end num desc,tm desc)
      

  3.   

    order by case when num = 0 then 1 else 0 end,tm desc
      

  4.   

    --创建表
    CREATE table tb_dec
    (
      id int identity(1,1),
      num int,
      tm datetime
    )
    insert INTO tb_dec VALUES(20,'2011-09-03')
    insert INTO tb_dec VALUES(0,'2011-09-03')
    insert INTO tb_dec VALUES(0,'2011-09-03')
    insert INTO tb_dec VALUES(20,'2011-09-04')
    insert INTO tb_dec VALUES(0,'2011-09-06')
    --查询数据
    select * from tb_dec
    order by case when num = 0 then 1 else 0 end,tm desc
    --结果集
    4 20 2011-09-04 00:00:00.000
    1 20 2011-09-03 00:00:00.000
    5 0 2011-09-06 00:00:00.000
    2 0 2011-09-03 00:00:00.000
    3 0 2011-09-03 00:00:00.000