首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

在没有逾期的情况下,把最近快过期的显示在最上面

2013-09-06 
在没有过期的情况下,把最近快过期的显示在最上面我是这样写的,SELECT * FROM ad WHERE 11ORDER BY case w

在没有过期的情况下,把最近快过期的显示在最上面
我是这样写的,
SELECT * FROM ad WHERE 1=1  ORDER BY case when adendtime>=getdate() then adendtime end   asc,intid desc
广告过期了,则按intid倒序排序,目的就是就能很明显的看到哪些快到期了
[解决办法]

SELECT * FROM ad WHERE 1=1  
ORDER BY case when DATEDIFF(dd,adendtime,getdate())>0 then adendtime end  asc,intid desc
???
[解决办法]

SELECT top 10 * FROM ad WHERE adendtime>=getdate() order by adendtime desc

[解决办法]
DROP TABLE #temp
CREATE TABLE #temp(adendtime DATETIME, id INT )
INSERT #temp
SELECT '2013-8-29',1 UNION ALL
SELECT '2013-8-29',2 UNION ALL
SELECT '2014-7-31',3 UNION ALL
SELECT '2015-6-30',4 UNION ALL
SELECT '2013-8-29',5 UNION ALL
SELECT '2014-2-26',6 UNION ALL
SELECT '2014-6-19',7 UNION ALL
SELECT '2013-10-1',8 UNION ALL
SELECT '2012-2-17',9 UNION ALL
SELECT '2010-3-9',10

SELECT  *
FROM    #temp
WHERE   1 = 1
ORDER BY (CASE WHEN adendtime BETWEEN GETDATE() AND GETDATE()+10 THEN adendtime WHEN adendtime > GETDATE() THEN adendtime ELSE '9999-12-31' END), id DESC
/*
adendtimeid
2013-08-29 00:00:00.0005
2013-08-29 00:00:00.0002
2013-08-29 00:00:00.0001
2013-10-01 00:00:00.0008
2014-02-26 00:00:00.0006
2014-06-19 00:00:00.0007
2014-07-31 00:00:00.0003
2015-06-30 00:00:00.0004
2010-03-09 00:00:00.00010
2012-02-17 00:00:00.0009
*/

热点排行