Rownum
ID 列を持つ一時テーブル #jobs があります。
Rownum Jobid Jobname
1 5074 Manager
2 780 Manager
3 71 Employee
4 654 HR
5 94 Employee
6 56 Employee
7 35 Manager
8 81 HR
9 358 Employee
今、私は「ジョブ名」列にソート条件を持っています
Rownum Jobid Jobname
1 5074 Manager
2 780 Manager
7 35 Manager
8 81 HR
4 654 HR
5 94 Employee
6 56 Employee
9 358 Employee
私の要件は、テーブルを並べ替えるたびに、Rownum
列をリセットする必要があることです。順序に従って、値をインクリメントする必要がありrownum
ます。
私は以下のように試しました
ALTER TABLE #Jobs DROP COLUMN RowNum //droping identity column from #jobs
SELECT * INTO #tempjob FROM #jobs //inserting #jobs rows into another temp table
TRUNCATE TABLE #Jobs //truncating all rows from #jobs
ALTER TABLE #Jobs ADD RowNum INT //create a new column without increment
//now inserting records from #tempjobs to #jobs with ROW_NUMBER()
INSERT INTO #Jobs
SELECT *,ROW_NUMBER() OVER(ORDER BY Jobname DESC) AS Rownum from #tempjob
これは良いと思いましたが、大量のレコードが 1 つの一時テーブルにある場合、同じデータを持つ別の一時テーブルを使用するのは良くないと思います。
これに対する代替ソリューションはありますか?