我有一个带有Rownum
标识列的临时表#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
我认为这很好,但是当一个临时表中有大量记录时,我认为使用另一个具有相同数据的临时表不好。
有没有其他解决方案?