Ich habe eine SQL Server-Abfrage, die eine Datenmenge zurückgibt, die die ID einer Person, die Entität, für die diese Person arbeitet, die zu der Entität gehörenden Standorte, den zugewiesenen Koordinator und die Status der Person.Fensterfunktion zum Entfernen bestimmter Datensätze aus dem SQL Server-Dataset
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
Ich brauche Aufzeichnungen zu beseitigen, in denen der einzige Status für die Kombination von EntityName, Location und AssignedTo Zurückgezogen wird. Also im obigen Datensatz würde ich ID = 18 mit LocationName = NH entfernen wollen.
Ich habe versucht, eine Fensterfunktion verwendet, die auf dem richtigen Weg sein können, aber ich bin nicht sicher, wie es weitergeht:
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
:
wie diese
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
Das gibt mir ein Ergebnis
Aber jetzt bin ich fest, wie ich weitermachen soll, oder wenn ich das überhaupt falsch mache.
Kann 'StatusName' etwas anderes als die beiden Werte sein? –
Ja, es gibt 7 Status, aber der einzige, den ich entfernen muss, ist Zurückgezogen. – jackstraw22