我在 SQL Server 2012 上工作我面临的问题我无法将组号更新到从 1 到 3 的每个步骤,这意味着我需要从 1 到 3 的每个组将标识号递增 1 作为 1、2、3 等。
create table #Replacement
(
PartIDC INT,
PartIDX INT,
FlagStatus nvarchar(50),
HasReplacement nvarchar(50),
groupId int,
step tinyint
)
insert into #Replacement (PartIDC,PartIDX,FlagStatus,HasReplacement,groupId,step)
values
(1222, 3421, 'Invalid', 'Critical', NULL, 1),
(3421, 6421, 'Valid' , 'Active' , NULL, 2),
(1222, 6421, 'Valid' , 'Chain', NULL, 3),
(5643, 2243, 'Invalid', 'Critical', NULL, 1),
(2243, 3491, 'Valid' , 'Active', NULL, 2),
(5643, 3491, 'Valid' , 'Chain', NULL, 3)
从#Replacement中选择*
预期结果
PartIDC PartIDX FlagStatus HasReplacement groupId step
1222 3421 Invalid Critical 1 1
3421 6421 Valid Active 1 2
1222 6421 Valid Chain 1 3
5643 2243 Invalid Critical 2 1
2243 3491 Valid Active 2 2
5643 3491 Valid Chain 2 3
在 PartID C 上,第 1 步和第 3 步总是相等
总是 step 1 和 step 2 在 PartID x 来自 step 1 等于 PartID C 来自 step 2 。
那么如何通过更新语句对组 ID 执行上述预期结果?
检查它是否适合您。请注意,此代码适用于每个包含不超过 3 个步骤的组。
下面的语句将首先根据这些记录的 PartIDC 创建您的组
Step = 1
,然后将其用于后续步骤。然后我们对结果进行建模并加入其中以更新表:这个查询:
现在产生: