我正在尝试向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做到这一点,但我什至不知道从哪里开始。
答案 0 :(得分:4)
对于您的数据,似乎您需要row_number()
函数:
select *, row_number() over (partition by id order by [Description]) as [order]
from table t;