Para que no de error por el gropup by DEBES incluir en el Gropup By Todos los campos de la consulta
en tu caso gropu by
deuddrei.categ, deuddrei.nrocta, maestro.apynom, deuddrei.mes, deuddrei.periodo, deuddrei.montop, deuddrei.fechapag, deuddrei.estado,;
deuddrei.comprob
Te pego la ayuda de otro foro
Lo que pasa es que cuando utilizas la instrucción "GROUP BY" en una consulta "SELECT - SQL" debes asegurarte que todos los campos que devolverá tu consulta que no se calculen con una función de agregado (como lo es el "MAX()") se incluyan en el "GROUP BY".
En las últimas versiones de Visual FoxPro, como la 9, se valida lo anterior y si no se cumple con ello, te muestra que hay un error con el "GROUP BY". En versiones anteriores creo que no lo validaba, por eso antes no marcaba error, y simplemente, muchas veces terminaba mostrando datos erróneos.
Ejemplo: Si tienes una tabla de Empleados y una tabla de Ventas, en donde por cada empleado puden existir muchas ventas, es decir, un empleado puede haber realizado varias ventas. Al querer obtener un reporte que tenga el nombre del empleado, el número de factura y la fecha de factura pero agrupado solamente por empleado, el sistema no puede calcularlo, es natural.
Si hay dos empleado, y cada empleado tiene dos ventas, al agrupar el reporte por empleado, el sistema se limitará a mostrar solamente dos registros (uno por cada empleado), pero si se le pide el número y fecha de factura, cómo sabría cuál (de las dos ventas de cada empelado) elegir para poner en el reporte. Simplemente no es posible, es por eso que marca error, hay un registro por cada empleado pero puede haber más de un registro de venta para cada uno.
Espero se entienda pero es un poco difícil explicarlo así por escrito y con puro texto. En cuanto al problema, pues por lo explicado anteriormente, si quieres agrupar por empleado, la fecha y el número de factura no se pueden mostrar (¿pues cuál mostraría? Si son varias por cada empleado). Podría quedar algo así:
SELECT ;
Empleado.c_empleado, ;
SUM(Facturas.total_factura) AS Total ;
FROM ;
control_datos!empleado ;
INNER JOIN control_datos!facturas ON Empleado.c_empleado = Facturas.c_empleado ;
WHERE Facturas.fecha_fact >= Date(2011,08,01) ;
GROUP BY Empleado.c_empleado ;
ORDER BY Empleado.c_empleado