Tengo problema con una sentencia en visual foxpro

Tengo problemas cuando ejecuto una sentencia
que quiero que me muestre el monto y el cliente la factura
de mayor monto del día de cierta ruta no me sale como quiero
por lo menos
el monto que me arroja si es
el cliente y el documento no es el correcto
Esta es la sentencia
SELECT MAX(monto) as montofact,documento,cliente FROM ccfact WHERE fecha=fecha1;
group BY rutaventa INTO CURSOR fact_may
Pero no obtengo lo que quiero me manda ciertos datos que no quiero ejemplo
montofactura documento cliente
604.92 13524 125
521.02 11579 168
49.50 11769 786
El problema es que cuando reviso en la tabla de ccfact me doy cuenta que ese no es el numero correcto de factura le que corresponde ese monto
De ante mano agradecido por cualquier ayuda que me puedas brindar
si necesitas algún otro dato [email protected]
Respuesta
1
<pre>Sí, ya veo. 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". De hecho en las últimas versiones de Visual FoxPro (como la 9) si no lo haces te muestra un error al ejecutar el comando. En versiones anteriores creo que no lo validaba y simplemente te mostraba datos erróneos, como en este caso.
Lo que se me ocurre que podrías hacer es dos consultas. Algo así:
** Se seleccionan los montos máximos por cada ruta de venta
SELECT ;
RutaVenta, ;
MAX(Monto) AS MontoFact ;
FROM ccfact ;
WHERE fecha = fecha1 ;
GROUP BY rutaventa ;
INTO CURSOR fact_may
** Se obtienen los datos adicionales relacionando las tabla de máximos con la original
SELECT ;
a.*, ;
b.Documento, ;
b.Cliente ;
FROM ;
fact_may a ;
INNER JOIN ccfact b ON (b.Monto == a.MontoFact AND b.RutaVenta == a.RutaVenta) ;
INTO CURSOR fact_may
Toma en cuenta que si hay dos registros cuya "RutaVenta" y "Monto" sean iguales, la consulta te devolverá ambos registros ya que los dos registros coinciden con la relación y la consulta por sí sola no podría decidir por uno o por otro, no sería correcto, tú tendrías que indicarle (modificándola obviamente) cual quisieras que se mostrara.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas