日期:2014-05-18  浏览次数:20442 次

求各位帮忙解答这个排序的问题
tableC

Id Time
301 2011-03-01
301 2011-03-03
301 2011-03-04
304 2011-03-05
301 2011-03-08
304 2011-03-07


先按照Time降序排序(排在最上面的日期是最近的一个日期)
再把所有相同的Id排在一起(ID不排序,只是将相同的ID连在一起,只对Time进行排序)

我想实现这样的效果

301 2011-03-08
301 2011-03-04
301 2011-03-03
301 2011-03-01
304 2011-03-07
304 2011-03-05



------解决方案--------------------
SQL code

declare @tableC table (Id int,Time datetime)
insert into @tableC
select 301,'2011-03-01' union all
select 301,'2011-03-03' union all
select 301,'2011-03-04' union all
select 304,'2011-03-05' union all
select 301,'2011-03-08' union all
select 304,'2011-03-07'

select * from @tableC order by id ,time desc

/*
Id          Time
----------- -----------------------
301         2011-03-08 00:00:00.000
301         2011-03-04 00:00:00.000
301         2011-03-03 00:00:00.000
301         2011-03-01 00:00:00.000
304         2011-03-07 00:00:00.000
304         2011-03-05 00:00:00.000
*/

------解决方案--------------------
select * from tableC
order by Id,Time desc

ID不排序是放不到一起去的
------解决方案--------------------
SQL code
order by id,[time] desc

------解决方案--------------------
正常情况主键不能为空,其他为空的时候,排序desc现在在最上面。