【发布时间】:2018-02-05 10:45:08
【问题描述】:
短篇小说
我的Requests 有“行”表。目前,当我向请求添加新行时,无法对其进行排序,因此我添加了Index 列。这将能够添加新行并按照我的意愿对它们进行排序。
我想做的事
我想编写 MSSQL 脚本,由InvoiceRequestId 将旧行的默认值设置为Index (0, 1, 2)。目前应该按原样设置(Id 顺序)。
当前表
Id InvoiceRequestId Index
2734 620 0
2735 620 0
2736 621 0
2737 622 0
2738 622 0
2739 622 0
...
我想要达到的目标
Id InvoiceRequestId Index
2734 620 0
2735 620 1
2736 621 0
2737 622 0
2738 622 1
2739 622 2
...
编辑
我明白了,有些人开始只为这些行发布答案。这应该是一般的解决方案,我的错,我之前没有澄清这一点。
解决方案
所以感谢下面的答案和这个主题 SQL Update with row_number() ,我找到了以下解决方案:
With IndexUpdate As
(
SELECT [Index],
ROW_NUMBER() OVER (PARTITION BY InvoiceRequestID ORDER BY ID) -1 as RN
FROM [InvoiceRequestRows]
)
UPDATE IndexUpdate SET [Index]=RN
【问题讨论】:
-
我已经更新了更新的答案,你也可以检查一下。
标签: sql sql-server