我在col1
-
1
1
3
4
4
4
5
7
10
13
我需要将其重新编号如下,因此它将消除数字之间的差距。
1
1
2
3
3
3
4
5
6
7
我能找到差距范围。没有找到重新编号的方法 - 尝试使用row_num()
应用分析函数但无法获得正确的结果。代码应该在Oracle和SQL Server中都有效,因此connect by
级别可能不是最佳方式。
答案 0 :(得分:3)
看起来像DENSE_RANK
,SQL-Server:
WITH CTE AS
(
SELECT Col1, RANK = DENSE_RANK() OVER (ORDER BY Col1 ASC)
FROM dbo.Table1
)
UPDATE CTE SET Col1 = RANK
WHERE Col1 <> RANK
我不熟悉Oracle(不再)了,但还有Dense_Rank
函数。
COL1
1
1
2
3
3
3
4
5
6
7