我有一个表 t,其中包含以下值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
级别可能不是最好的方法。
我有一个表 t,其中包含以下值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
级别可能不是最好的方法。
这看起来像一个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