A la consulta le agregas un ORDER BY para que aparezcan agrupados todos los proveedores. Entonces la lógica para hacerlo sería:
Código php:
Ver original$proveedor = '';
if ($proveedor != $fila['proveedor']) {
mostrar_subtotal();
nueva_fila();
$proveedor = $fila['proveedor'];
}
/* Mostrar datos */
}