SQL:需要使用group by或任何其他方式对值进行排序

时间:2012-11-12 08:50:51

标签: sql sql-server

这是我桌子的示例风景。首先我必须找到,由ITime asc订购,但如果在ITime中有任何相同的记录,则记录顺序将是“pass-> fail-> withdraw”。请查看下面的临时表。

if object_id('tempdb.dbo.#temp321','U') is not null
drop table tempdb.dbo.#temp321
create table #temp321(
id int,
uname varchar(50),
ITime datetime,
Result varchar(10)
)
INSERT into #temp321 values('1','a','2012-11-12 13:12:28.103','pass')
INSERT into #temp321 values('2','b','2012-11-12 13:12:28.103','fail')
INSERT into #temp321 values('3','c','2012-11-12 12:58:30.000','pass')
INSERT into #temp321 values('4','d','2012-11-12 13:12:28.103','withdrow')
INSERT into #temp321 values('5','e','2012-11-12 12:58:41.360','withdraw')
INSERT into #temp321 values('6','f','2012-11-12 13:12:28.103','pass')
INSERT into #temp321 values('7','g','2012-11-12 13:12:28.103','fail')
select ID from #temp321 ORDER BY ITime ASC
drop table #temp321


Expected outcomes ID value : 3,5,1,6,2,7,4

我是怎么做到的?提前谢谢。

1 个答案:

答案 0 :(得分:5)

ORDER BY ITIME ASC,
         CASE Result WHEN 'pass' THEN 1
                     WHEN 'fail' THEN 2
                     WHEN 'withdraw' THEN 3
                     ELSE 4
                     END,
         ID;