create table #tempEmp ( emppk int, empfk int, lastname varchar(25), firstname varchar(25), empnum varchar(20), empdob date, reltype varchar(10)) insert into #tempEmp (emppk, empfk, lastname, firstname, empnum, empdob, reltype) values (1, null, 'Smith', 'John', 'G-0001', '2000-01-02', null), (2, 1, 'Smith', 'Jane', 'G-0001', '2001-01-02', 'Spouse'), (3, 1, 'Smith', 'Jim', 'G-0001', '2020-01-03', 'Child'), (4, 1, 'Smith', 'Jenny', 'G-0001', '2021-01-04', 'Child'), (5, null, 'Sumner', 'Gordon', 'G-0002', '1951-10-02', null), (6, 5, 'Sumner', 'Joseph', 'G-0002', '1976-09-23', 'Child') SELECT emppk, empfk, lastname, firstname, empnum, empdob, reltype FROM #TempEmp WHERE empnum is not null and empnum <> '' and right(ltrim(rtrim(empnum)), 3) not like '-__' ORDER BY empnum, empfk, reltype desc, empdob desc drop table #tempempUpdate:
;with cte as (select *, row_number() over (partition by empnum order by empnum, empfk, reltype desc, empdob desc ) as Rn from #TempEmp) select * from cte