• just go with practical scenario it may happen that email id same but domain different

    in that case Just remove substring from "bitbucket-25253" solution

    declare @T TABLE

    (userid INT, emailname VARCHAR(50),name varchar(10))

    INSERT INTO @T

    SELECT 1, 'test123test@b.com','Bill' UNION ALL

    SELECT 1, 'test123test@a.com','Billiiiii' UNION ALL

    SELECT 2, 'a@a.com','Billy' UNION ALL

    SELECT 3, 'a@a.com','William' UNION ALL

    SELECT 4, 'b@b.com','John' UNION ALL

    SELECT 5, 'b@b.com','Johnny' UNION ALL

    SELECT 6, 'c@c.com','Jimmy' UNION ALL

    SELECT 7, 'c@c.com','Jim'

    ;WITH cte

    as (select row_number() over(partition by emailname order by userid DESC) as rn,emailname ,name

    from @T)

    select * from cte where rn = 1