un tip:
si el SQL siempre debe terminar con
GROUP BY puedes omitir el segundo argumento, y hacerlo automatico....
Código PHP:
// obtenemos las columnas despues de GROUP BY (a,b,c,d,...)
preg_match('/GROUP\s+BY\s+(.*)$/i', $CadSQL, $test);
// separamos por comas, y contamos los trozos...
$Columnas_Principales = sizeof(explode(',', $test[1]));
tal ves.. es solo una idea, suerte!