表如下:
sid szt stitle sdate
1   1   标题1  2010-01-27
2   0   标题2  2010-01-20
3   1   标题3  2010-01-13我想用一条SQL语语实现以下功能:
返回全部记录,且满足(离现在7天内且szt为1)的记录排序在前面。高手指教。

解决方案 »

  1.   

    SELECT * FROM TB ORDER BY 
    CASE WHEN SDATE <=DATEADD(DD,-7,GETDATE()) AND SZT=1 THEN 0 ELSE 1 END
      

  2.   


    select * from tb
    order by 
    case when sdate between  dateadd(day,-7,convert(char(10),getdate(),120)) and convert(char(10),getdate(),120)
    and szt=1 then 0 else 1 end
      

  3.   

    SELECT * FROM TB ORDER BY  
    CASE WHEN SDATE >=DATEADD(DD,-7,GETDATE()) AND SZT=1 THEN 0 ELSE 1 END要修改一下>=
      

  4.   


    ORDER by szt + case when   datediff(dd,getdate() ,sdate)>7 then 1 else 0 end
      

  5.   

    SELECT * FROM TB ORDER BY  
    CASE WHEN  7 >= DATEDIFF(DD,SDATE,GETDATE()) AND SZT=1 THEN 0 ELSE 1 END
    这样应该会好点
      

  6.   

    SELECT * FROM TB ORDER BY  
    CASE WHEN  7 >= DATEDIFF(DD,SDATE,GETDATE())  THEN 0 ELSE 1 END,SZT DESC
      

  7.   

    字段不要用函数,如果有索引,这样会好
    SELECT * FROM TB ORDER BY   
    CASE WHEN SDATE >=DATEADD(DD,-7,GETDATE()) AND SZT=1 THEN 0 ELSE 1 END
      

  8.   

    我说的不是索引问题,如果有时间信息这个DATEADD(DD,-7,GETDATE()) 会筛选不全