• 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