SQL Server 2008:按ID重新排序组

时间:2018-07-06 15:15:25

标签: sql sql-server tsql

我正在尝试向ID列分组的列添加数字序列(1到n)。例如,我有一个数据集:

ID      Name    Description Order
---------------------------------
11049   Sanchez A           5
11049   Sanchez B           4
11049   Sanchez C           5
11049   Sanchez D           7
11049   Sanchez E           6
11049   Sanchez F           2
11049   Sanchez G           1
11049   Sanchez H           3
46947   Mendez  I           1
46947   Mendez  J           1
46947   Mendez  K           2

请注意,对于ID为11049的行,“顺序”列中有两个5。同样,对于ID为46947的行,在Order列中有两个1。我需要确保每个ID集只有唯一的数字。例如,对于ID为46947的行,描述值为I的行的列Order值应为1。列描述的值为J ,应具有2。值为K的列描述应具有3列的Order值。结果表应类似于此:

ID      Name    Description Order
---------------------------------
11049   Sanchez A           1
11049   Sanchez B           2
11049   Sanchez C           3
11049   Sanchez D           4
11049   Sanchez E           5
11049   Sanchez F           6
11049   Sanchez G           7
11049   Sanchez H           8
46947   Mendez  I           1
46947   Mendez  J           2
46947   Mendez  K           3

数字的顺序顺序并不重要,但是我只需要确保从编号1开始的每组ID都有一个不同的编号。

我考虑过如何使用T-SQL做到这一点,但我什至不知道从哪里开始。

1 个答案:

答案 0 :(得分:4)

对于您的数据,似乎您需要row_number()函数:

select *, row_number() over (partition by id order by [Description]) as [order]
from table t;
相关问题