我目前数据库有几个字段,如下:
ID SFZD      ZD_Date               title
1   0    2008-3-27 00:00            测试1
2   1    2008-3-29 12:00            测试2
3   0    2008-3-27 00:00            测试3
4   0    2008-3-27 00:00            测试4里边的sfzd这个字段表示该条信息是否置顶
zd_date这个字段表示如果置顶的话结束日期是好久(精确到小时),不置顶的话默认就是当天的00:00
sql语句
select title from table order by sfzd desc,id desc
这个SQL语句显示出来的就是
测试2
测试4
测试3
测试1
但是到了3-29那天当这个置顶的时间限制到了的时候就该是
测试4
测试3
测试2
测试1
请问在上边那条SQL语句中如何加入判断时间的SQL语句?
在线等待。。

解决方案 »

  1.   

    select title from [table] order by case when ZD_Date>getdate() then 0 else sfzd end desc,id desc 
      

  2.   

    select title 
    from table 
    order by case when sfzd=1 and ZD_Date>=getdate() then 1 else 0 end desc,id desc 
      

  3.   

    一楼的>貌似应该是<
      

  4.   

    是哦,写反了,是 <
    ,海兄火眼金睛啊,呵
    select title 
    from [table] 
    order by case when ZD_Date<getdate() then 0 else sfzd end desc,id desc 
      

  5.   

    declare @t table(id int identity(1,1),sfzd int,zd_date datetime,title varchar(10))
    insert into @t select 0,'2008-3-27 00:00','测试1'
    insert into @t select 1,'2008-3-28 12:00','测试2'
    insert into @t select 0,'2008-3-27 00:00','测试3'
    insert into @t select 0,'2008-3-27 00:00','测试4'select * from @t order by 
    case when zd_date>getdate() then zd_date else 0 end desc ,id desc