一条sql 语句如何排序两个时间字段,

一个开始时间和一个结束时间,查询结果是:结束时间大于当前时间开始显现,当结束时间小于当前时间时的在后边显示,结束时间大于当前时间的按发布时间正序排列

第1个回答  2012-11-09
sqlserver ? 如下:
select * from tab
order by case when 结束时间 > getdate() then 0
else 1 end
,发布时间

;
第2个回答  2012-11-09
select * from table order by a,b asc
先按a排序如果a相同再按b排序
第3个回答  推荐于2016-04-04
这样能行就好了:
select * from(select top 100 percent * from b order by B) order A
第4个回答  2012-11-09
排序两个时间字段?
是要这样的效果吗 select * from table1 order by date1,date2追问

不是这样
一个开始时间和一个结束时间,查询结果是:结束时间大于当前时间开始显现,当结束时间小于当前时间时的在后边显示,结束时间大于当前时间的按发布时间正序排列

追答

你可以用类似如下的方法

select * from table1 order by case when date1 > date2 then date3 else 其它排序字段 end

追问

这个按desc排序还是出错啊

追答

把你的语句贴出来看看

追问

select Id,PAddtime,PEndtime from T_Table order by case when PEndtime>Getdate() then PAddtime else PEndtime  end

这样查出来,PAddtime再按desc排序就对了,可是不知道怎么写,麻烦你了

追答

在最後end 後面加个desc
select Id,PAddtime,PEndtime from T_Table order by case when PEndtime>Getdate() then PAddtime else PEndtime end desc

追问

也不对,这样查询出来是按PEndtime 时间desc,我要的是如果pendtime大于当前时间的是按PaddTimedesc,pendtime小于当前时间的在大于当前时间的后边显示

追答

那这样

select Id,PAddtime,PEndtime from T_Table order by case when PEndtime>Getdate() then PAddtime else '1900/1/1' end desc

追问

那Pendtime小于当前时间的也按desc排序,怎样整啊,上边这条只能是Pendtime大于当前时间的按desc排序

追答

可以这样

select paddtime,pendtime from T_Table
order by case when pendtime > Getdate() then PAddtime end desc,case when pendtime < GETDATE() then paddtime end desc;

本回答被网友采纳
相似回答