表格中的数据格式如下
ID DocNumber RevOrder
1 DOC-001 NULL
2 DOC-001 NULL
3 DOC-001 NULL
4 DOC-002 NULL
5 D0C-002 NULL
6 D0C-003 NULL
我需要将 RevOrder
列更新为以下格式
ID DocNumber RevOrder
1 DOC-001 3
2 DOC-001 2
3 DOC-001 1
4 DOC-002 2
5 D0C-002 1
6 D0C-003 1
逻辑是:DocNumber
可以重复,最大ID的DocNumber
得到RevOrder = 1
,接下来得到 RevOrder = 2
等...我怎样才能实现上述情况?
最佳答案
根据分区上的 ROW_NUMBER()
使用此 UPDATE
语句:
;WITH UpdateData AS
(
SELECT
ID, DocNumber,
ROW_NUMBER() OVER(PARTITION BY DocNumber ORDER BY ID DESC) AS 'RowNum'
FROM dbo.YourTable
)
UPDATE dbo.YourTable
SET RevOrder = RowNum
FROM dbo.YourTable t
INNER JOIN UpdateData ud ON t.ID = ud.ID
关于更新行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983869/