我有一张桌子,员工有时会更改名称,成为另一个ID下的全职员工(FTE从PeopleSoft获得不同的ID,承包商ID是招聘人员的转储),有些甚至有相同的第一,中,最后和最后4 SSN。由于该表混合了全职和承包商以及相同名称和ssn的欺骗,我不是百分之百的唯一性表。
我需要一个符合以下条件的视图:
条件:
答案 0 :(得分:0)
按照你的逻辑,看起来你只是在查找同一LastFourSSN出现一个Active和一个Terminated状态的记录(因为只有两个状态,你排除2+活动或2+终止的实例,多个LastFourSSN的唯一可能性是1个有效且1个终止的可能性。
使用该逻辑,可以构造这样的东西,它返回记录,其中只有1个活动记录匹配终止记录(来自仅有一个条目的终止记录列表),并且因为每个记录必须匹配终止记录,我们只返回状态为“活动”的那些:
select
FirstName
,LastName
,EmployeeID
,Status
,LastFourSSN
from
tblPeople
where
Status = 'Active'
and LastFourSSN in
(
/*selected only entries with 1 active*/
select
LastFourSSN
from
tblPeople
where
Status = 'Active'
and LastFourSSN in /*only show entries with matching termination record*/
(
/*selected only entries with 1 termination*/
select
LastFourSSN
from
tblPeople
where
Status = 'Terminated'
group by
LastFourSSN
having
count(*) = 1
)
group by
LastFourSSN
having
count(*) = 1
)