Selecting max record for each user Selecting max record for each user sql-server sql-server

Selecting max record for each user


This solution uses the uniqueness of the ContractId field:

SELECT MemberID, ContractID, StartDate, EndDateFROM member_contracts WHERE ContractId IN (    SELECT MAX(ContractId)    FROM member_contracts     GROUP BY MemberId)

See it working online: sqlfiddle


The safest way to do this is with row_number

select MemberId, ContractId, StartDate, EndDatefrom (select mc.*,             row_number() over (partition by MemberId order by contractId desc) seqnum      from Member_Contracts mc     ) mcwhere seqnum = 1

This handles the case of multiple contracts for the same member . . . which may not really be an issue in this data.