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

时间:2015-03-26 01:14:00

标签: sql sql-server sql-server-2008 sql-update row-number

我的表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中使用时抛出错误。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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