我有一个SQL Server查询,它返回一个数据集,显示一个人的ID,该人工作的实体,属于该实体的位置,分配给该案例的协调员和人的地位。从SQL Server数据集中删除特定记录的窗口函数
ID EntityName LocationName AssignedTo StatusName
17 F&S St. Lucie A Hardon Active
17 F&S St. Lucie A Hardon Withdrawn
18 F&S NH A Hardon Withdrawn
20 H&H NCH B Reedy Active
我需要消除EntityName,LocationName和AssignedTo组合的唯一状态为Withdrawn的记录。所以在上面的数据集中,我想要用LocationName = NH删除ID = 18。
我使用窗口函数,这可能是在正确的道路上尝试,但我不知道如何着手:
Select id, entityname, locationname, assignedto, statusname
Into #test
From Table A
Select *,
row_number()over(partition by entityname, locationname, assignedto
order by case when statusname = 'Withdrawn' then 1
else 2 end) as rn
from #test
这给了我这样一个结果:
ID EntityName LocationName AssignedTo StatusName RN
17 F&S St. Lucie A Hardon Withdrawn 1
17 F&S St. Lucie A Hardon Active 2
18 F&S NH A Hardon Withdrawn 1
20 H&H NCH B Reedy Active 1
但现在我被困在如何继续,或者如果我甚至以这种错误的方式去做。
'StatusName'可以是其他值吗? –
是的,有7个状态,但我需要删除的唯一一个是撤回。 – jackstraw22