• You should be able to use the MAX to get what you want, unless I'm not understanding your issue.

    DECLARE @sample TABLE
    (
        ContactID INT,
        RenewalDate DATE
    )
    ;

    INSERT INTO @sample
    SELECT 1, '01/07/2018'
    UNION ALL
    SELECT 1, '01/07/2017'
    UNION ALL
    SELECT 1, '01/07/2016'
    UNION ALL
    SELECT 2, '01/07/2015'
    UNION ALL
    SELECT 2, '01/07/2014'
    UNION ALL
    SELECT 3, '01/07/2018'
    UNION ALL
    SELECT 3, '01/07/2017'
    UNION ALL
    SELECT 3, '01/07/2016'

    SELECT ContactID, MAX(RenewalDate) AS RenewalDate
    FROM @sample
    GROUP BY ContactID
    ORDER BY ContactID
    Results:
    ContactID    RenewalDate
         1        2018-01-07
         2        2015-01-07
         3        2018-01-07

    -------------------------------------------------------------
    we travel not to escape life but for life not to escape us
    Don't fear failure, fear regret.