La suma es relativamente fácil, si metes los datos en una matriz
$matriz_total[$meses[$row['FECHA_VENTA']-1]][$row['ZONA']]+=$row['COMISION'];//suma el total de zona por mes
$matriz_total[$meses[$row['FECHA_VENTA']-1]][$row['TIPO_OPERACION']]+=$row['COMISION'];//suma el total de tipo oper. por mes
Esto lo puedes hacer antes de dibujar la tabla.
Cuando dibujes la tabla, puedes al final de cada fila buscar los datos de la matriz de totales.
Código PHP:
Ver original if(!isset($tipo_ope)){//si no existe la bandera $tipo_ope $tipo_ope==$row['TIPO_OPERACION'];
$zona==$row['ZONA'];
}
echo "<tr>";
if($row_anteriorzona!=$row["ZONA"]){
echo "<td>".$row['ZONA']."</td>";
$row_anteriorzona=$row['ZONA'];
}else{
echo "<td> </td>";
}
echo "<td>".$row['TIPO_OPERACION']."</td>";
echo "<td>".$row['VENDEDOR']."</td>";
echo "<td>".$meses[$row['FECHA_VENTA']-1]."</td>";
echo "<td>".$row['COMISION']."</td>";
if($row['TIPO_OPERACION']!=$tipo_ope){//si cambiamos de un tipo de operación a otro
foreach($meses as $mes){//recorremos los meses (puede ser otro arreglo de meses, solo los que queremos)
if(isset($matriz_total[$mes][$row['ZONA'][$row['TIPO_OPERACION']])//si la matriz de totales tiene datos para el mes (del bucle) de la zona y el tipo_ope actual echo '<td>'.$matriz_total[$mes][$row['ZONA'][$row['TIPO_OPERACION']].'</td>;
else//si no hay datos escribimos 0 o vacio
echo '<td> 0</td>';
}
}
echo "</tr>";
}
También se puede dibujar la tabla con las celdas combinadas, pero eso ya requiere operaciones mucho más complejas, yo tengo un desarrollo que hace exactamente eso y maneja recursividad