I'd go with the generic load approach mentioned by Stefan, although you are going to have to create a column that contains the 1,2,3 etc. For that you can try something like the following (not tested) when you load Table A.
Load Customer, Contact, Type, Email,
if(rowno()=1 or Customer <> previous(Customer), 1, previous(CustomerContactRowNo)+1) as ContactRowNo
Resident [Table A];
If previous(Customer) doesn't work try peek('Customer').
Edit: Sorry, I forgot to mention that you have to order Table A first by Customer before using the above script.