Perhaps something like this. This will return one lead per person with preference for WEB:
select d.Name
,d.leadSource
from (
select name
,leadSource
,rn = row_number() over (
partition by name
order by case when LeadSource = 'WEB' then 0 else 1 end, LeadSource
)
from leads
) as d
where d.rn = 1
Be One with the Optimizer
TG