A good case for ROW_NUMBER()
drop table #data
create table #data
(
contactid int,
totaldue money,
rn int,
maxrn int
)
insert into #data
select 1, 49846.693, 1, 1
union all
select 1, 43214.9511, 2, 2
union all
select 2, 43962.7901, 1, 1
union all
select 2, 42123.1691, 2, 2
union all
select 3, 89409.6319, 1, 1
union all
select 3, 82078.0355, 2, 2
union all
select 4, 27162.5876, 1, 1
select * from #data
;with cte as
(
select
ROW_NUMBER() OVER(PARTITION BY ContactID ORDER BY RN DESC) AS RowNum,
*
FROM
#data
)
select * from cte where rownum = 1