如何使用根据其他列值更改的递增顺序值更新列

时间:2017-12-07 02:18:24

标签: sql sql-server group-by sequence row-number

我正在尝试更新表中的列,以便Index列(当前是任意数字)从1000开始按顺序重新编号,增量为10,并且每次组更改时此序列都会重新启动。

我已尝试使用PARTITION的ROWNUMBER()并尝试定义SEQUENCE,但我似乎无法得到我正在寻找的结果。

表1

ID    Group    Index
1         A       1
2         A       2
3         B       3
4         B       4
5         B       5
6         C       6
7         D       7

我想要的: 表1

ID    Group       Index
1         A       1000
2         A       1010
3         B       1000
4         B       1010
5         B       1020
6         C       1000
7         D       1000

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()进行一些算术运算:

select t.*,
       990 + 10 * row_number() over (partition by group order by id) as index
from t;

请注意groupindex是SQL保留字,因此它们的列名非常糟糕。