我有一個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