Another idea. If your phone numbers table has something like an IsPrimary field then you could sort by this field then use an IIF to decide to display the name or not. BUT you would have to guarantee that each person has a primary number or you'll get phone numbers with blank names and you wouldn't know who they belong to, or rather you'd think they belong to the wrong person... This is probably a bad idea.
Code:
SELECT IIf([IsPrimary], [PersonName], "") AS Person,
PhoneNumber.PhoneNumber
FROM Person
INNER JOIN PhoneNumber
ON Person.PersonId = PhoneNumber.PersonId
ORDER BY Person.PersonName,
PhoneNumber.IsPrimary;