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.