【发布时间】:2017-04-16 18:13:09
【问题描述】:
我为我的表创建了一个默认值为 0 的列。我想用正确的序列号更新该表。我可以用 Row_Number 做到这一点吗?
我的桌子是:
PersonID | Code | Sequence Number
---------+--------+------------
10 | D112 | 0
10 | D112 | 0
10 | D112 | 0
10 | E110 | 0
10 | E110 | 0
10 | E110 | 0
10 | D112 | 0
10 | D112 | 0
10 | D112 | 0
10 | E110 | 0
10 | E110 | 0
10 | E110 | 0
我希望我的桌子是这样的:
PersonID | Code | Sequence Number
---------+--------+------------
10 | D112 | 1
10 | D112 | 1
10 | D112 | 1
10 | E110 | 2
10 | E110 | 2
10 | E110 | 2
11 | M490 | 1
11 | M490 | 1
11 | M490 | 1
11 | N550 | 2
11 | N550 | 2
11 | N550 | 2
这是我拥有的代码,但不确定是否正确。
WITH CTE AS (
SELECT
t.Sequence Number,
ROW_NUMBER() OVER (PARTITION BY t.PersonID, t.Code ORDER BY t.PersonID) AS RN
FROM Table AS t )
UPDATE CTE
SET Sequence Number = RN
【问题讨论】:
-
看起来select语句是正确的
标签: sql sql-server sql-server-2012 common-table-expression row-number