当前位置: 代码迷 >> Sql Server >> order by 排序有关问题 ,(完美解决的满分送)
  详细解决方案

order by 排序有关问题 ,(完美解决的满分送)

热度:89   发布时间:2016-04-24 20:35:25.0
order by 排序问题 ,在线等~(完美解决的满分送)
表结构:

ID  Productname  Startime  EndTime


select id,StartTime,EndTime,

(case when getdate() between StartTime and EndTime then 0 when getdate()<StartTime then 1 else 2 end) as LISTORDER,  --判断商品即将开始(1)、正在进行中(0)、已经结束(2)

datediff(second,getdate(),EndTime) as dates, 

datediff(second,getdate(),StartTime) as dates1

from [ceb_DiHuDB].[dbo].[ceb_P_TuanGou]

order by ...........


排序条件先后顺序是:正在进行(剩余时间最小的拍前面)、即将开始(最先即将开始的时间拍前面)、已经结束


ps:不知道我说的是否明白,是一个商品竞拍的东西
sql

------解决方案--------------------


select id,StartTime,EndTime,

(case when getdate() between StartTime and EndTime then 0 when getdate()<StartTime then 1 else 2 end) as LISTORDER,  --判断商品即将开始(1)、正在进行中(0)、已经结束(2)

datediff(second,getdate(),EndTime) as dates, 

datediff(second,getdate(),StartTime) as dates1

from [ceb_DiHuDB].[dbo].[ceb_P_TuanGou]

order by 2

???

------解决方案--------------------
select id,StartTime,EndTime,
(case when getdate() between StartTime and EndTime then 0 when getdate()<StartTime then 1 else 2 end) as LISTORDER, 
datediff(second,getdate(),EndTime) as dates, 
datediff(second,getdate(),StartTime) as dates1
from [ceb_DiHuDB].[dbo].[ceb_P_TuanGou]
order by 
case when getdate() between StartTime and EndTime then datediff(second,GETDATE(),StartTime) end ,
case when datediff(day,GETDATE(),StartTime)>=0 then datediff(day,GETDATE(),StartTime) end,
case when datediff(day,GETDATE(),StartTime)<0 then datediff(day,GETDATE(),StartTime) end desc

------解决方案--------------------
  相关解决方案