同様の質問がすでにここで尋ねられています。しかし、現在のシナリオは以前より少し複雑です。この例では、if same Itime
then でケースごとに並べ替えることができますが、ifItime
と result が同じ場合、どうすれば並べ替えることができますか?
私の質問は、結果 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