主キー (ID も) として ID と datetimestamp 列を持つテーブルがあります。以下に示すように、タイムスタンプ値ごとにソートされた ID でテーブルを更新する必要があります。すべての ID が存在するわけではありません。ID は正しく、日時スタンプがごちゃごちゃしていて、並べ替える必要があります。
現在のデータを含むデータベーステーブル -
id datetimestamp
-- -----------------------
1 2013-08-08 14:08:43.560
2 2013-08-05 14:08:46.963
4 2013-08-06 14:08:53.247
5 2013-08-04 14:08:55.610
6 2013-08-03 14:08:58.543
8 2013-08-05 14:08:46.963
9 2013-08-06 14:08:53.247
10 2013-08-04 14:08:55.610
11 2013-08-03 14:08:58.543
として必要なデータ -
id datetimestamp
-- -----------------------
1 2013-08-03 14:08:58.543
2 2013-08-03 14:08:58.543
4 2013-08-04 14:08:55.610
5 2013-08-04 14:08:55.610
6 2013-08-05 14:08:46.963
8 2013-08-05 14:08:46.963
9 2013-08-06 14:08:53.247
10 2013-08-06 14:08:53.247
11 2013-08-08 14:08:43.560
以下は、サンプルデータを作成できるスクリプトです -
create table #tmp_play
(id int identity (1,1) primary key, datetimestamp datetime)
insert into #tmp_play values (getdate());
insert into #tmp_play values (getdate()-3);
insert into #tmp_play values (getdate()-1);
insert into #tmp_play values (getdate()-2);
insert into #tmp_play values (getdate()-4);
insert into #tmp_play values (getdate()-5);
delete from #tmp_play where id = 3
insert into #tmp_play (datetimestamp)
select datetimestamp from #tmp_play
delete from #tmp_play where id = 7
以下のアプローチで試してみましたが、ID がないため使用できません。
with sorted as
(select top 100 ROW_NUMBER() OVER(ORDER BY datetimestamp) as RowNum, *
from #tmp_play order by datetimestamp)
update t
set t.datetimestamp = s.datetimestamp
from #tmp_play t
join sorted s on t.id = s.RowNum
このデータをどのようにソートできるか考えていますか?