sql - SQL Server 2008:按 id 重新排序组
问题描述
我正在尝试将一系列数字(1 到 n)添加到按 ID 列分组的列中。例如,我有一个这样的数据集:
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
Order 列中有两个 5。同样对于 ID 为 的行,46947
Order 列中有两个 1。我需要确保每个 ID 集只有不同的数字。例如,对于 ID 为46947
的行,描述值为 的行I
的列 Order 值为 1。值为 的列描述J
应为 2。值为 的列描述K
应具有一列订单值为 3。生成的表应如下所示:
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 来做到这一点,但我什至不知道从哪里开始。
解决方案
对于您的数据,您似乎需要row_number()
功能:
select *, row_number() over (partition by id order by [Description]) as [order]
from table t;