Al momento de efectuar el while para ciclar los resultados, crea una variable temporal que vaya tomando como valor el nombre del último proveedor mostrado. Para esto tendrás que ordenar los resultados por nombre de proveedor en tu consulta.
Así, en cada loop comparas el valor del proveedor actual con el que tienes guardado en tu variable, si son iguales imprimes el resto de datos y no el nombre; y si no lo son, inicias un nuevo grupo con el proveedor actual.