如何使用由另一列分区的 ID 更新列?

How to update a column with IDs partitioned by another column?

我有 table ACCOUNT 以下两列

id,acct_num
1,123
2,123
3,456
4,121
5,123

我想在按 acct_num

分区的 id 列中分配整数值

这就是我想要的 -

id,acct_num
1,121
2,123
2,123
2,123
3,456

ID 应按 acct_num 排序,acct_num 多次出现时相同,并且在其列中是唯一的。
我试过这个 -

update a
set a.id = row_number() over (partition by acct_num order by acct_num)
from account a

窗口函数只能在SELECT中使用是抛出错误。有人可以帮助我吗?

您可以使用 Common Table Expression (CTE):

;WITH CTE AS(
    SELECT *,
        RN = DENSE_RANK() OVER(ORDER BY acct_num)
    FROM account
)
UPDATE CTE SET id = RN

SQL Fiddle