这里已经提出了一个类似的问题。但目前的情况比以前稍微复杂一些。在示例中,如果相同Itime
,那么我们可以按大小写排序,但如果Itime
和结果相同,那么我该如何排序。
我的问题是,这里的结果 ID:3,5,6,1,2,7,8,4。为什么失败案例是 2,7,8 。
为什么不是8、2、7?
如果我想要这样的预期结果:3,5,1,6,8,2,7,4 我该如何继续?
请运行以下命令并帮助我进行排序。提前致谢。
if object_id('tempdb.dbo.#temp321','U') is not null
drop table tempdb.dbo.#temp321
create table #temp321(id int, uname varchar(50), current_point int,
previous_point int, ITime datetime, Result varchar(10))
INSERT into #temp321 values('1','a','50','40','2012-11-12 13:12:28.103','pass')
INSERT into #temp321 values('2','b','15','10','2012-11-12 13:12:28.103','fail')
INSERT into #temp321 values('3','c','71','70','2012-11-12 12:58:30.000','pass')
INSERT into #temp321 values('4','d','34','30','2012-11-12 13:12:28.103','withdraw')
INSERT into #temp321 values('5','e','40','35','2012-11-12 12:58:41.360','withdraw')
INSERT into #temp321 values('6','f','65','60','2012-11-12 13:12:28.103','pass')
INSERT into #temp321 values('7','g','20','15','2012-11-12 13:12:28.103','fail')
INSERT into #temp321 values('8','h','10','7','2012-11-12 13:12:28.103','fail')
select
ID
from
#temp321
ORDER BY
ITime ASC,
CASE Result
WHEN 'pass' THEN 1
WHEN 'fail' THEN 2
WHEN 'withdrow' THEN 3
END
drop table #temp321
- 当前输出ID:3,5,6,1,2,7,8,4
- 预期输出 ID:3,5,1,6,8,2,7,4