> I do not need to send three emails to info@peterprod.com.
welcome to the wonderful world of databases
which one of the three would you like to send it to?
you need some kind of condition, on one or more of the remaining columns, to be able to pick out a single row from any group of more than one row with the same email
the condition is often something like "last one entered" or "with the most sales" or something
i've seen people use nonsensical but otherwise functional conditions like "lowest alphabetical name"
in your case, this would give you 3 instead of 1, because Bob comes before Joe and John, plus of course 4
select email, min(person)
from yourtable
group by email
if you want the company too, you could use
select email, min(person), min(company)
but that might give you Bob with the wrong company (except it doesn't in this instance, by coincidence)
you could also try
select email, min(pad(company)||person))
so that at least you get the right person with the right company, but now this gives you Bob and Joe, plus of course Rob
note the pad function, which i have invented here, pads the company on the right with spaces before concatenating the person, so that wherever this is going (mail merge?) can substring it
rudy