Realizo la consulta sobre DBFs con servidor ADS
Para entender la consulta explico las bases involucradas
A.BDSGC03 - base de Ventas
D.BDSGC04 - base de Detalles de Ventas se aplica en Sum()
B.BDSGC18 - base de Clientes
C.BDSGC33 - base de Ramos de Venta
consulta SQL
- Code: Select all Expand view
- ADSExecuteSQLDirect( "SELECT A.FFEVTA01,A.FDOCINT1,A.FCABFA04,SUM(D.FDETFA06*D.FDETFA08) AS MontoVta,SUM(D.FDETFA06*D.FDETFA07) AS Costo," + ;
"SUM(D.FDETFA11) AS Ganancia,(SUM(D.FDETFA06*D.FDETFA08)/SUM(D.FDETFA06*D.FDETFA07)-1)*100 AS Porc,SUM(D.FDETFA06) AS TotalKg," + ;
"B.FIDCLI01,B.FRAMO01,C.FRAMO01,C.FRAMO02 "+ ;
"FROM BDSGC03 AS A INNER JOIN BDSGC04 AS D ON A.FDOCINT1=D.FDOCINT1, BDSGC18 AS B, BDSGC33 AS C " + ;
"WHERE A.FFEVTA01 BETWEEN '"+hDatos["Desde"]+"' AND '"+hDatos["Hasta"]+"' " + ;
"AND A.FIDCLI01=B.FIDCLI01 AND D.FUNI01='KG' AND B.FRAMO01=C.FRAMO01 " + ; // AND A.FIDCLI01=B.FIDCLI01
"GROUP BY A.FFEVTA01,A.FDOCINT1,A.FCABFA04,A.FCABFA12,A.FCABFA14,A.FCABFA15,A.FCABFA18,A.FCABFA24,A.FCABFA31," + ;
"B.FIDCLI01,B.FRAMO01,C.FRAMO01,C.FRAMO02 " + ;
"HAVING FCABFA18 AND NOT FCABFA24 " + ;
"ORDER BY C.FRAMO02,A.FFEVTA01,A.FCABFA04" )
En WHERE se indica las fechas inicio-fin, la igualdad entre cod de cliente en Ventas - Cliente, FUNI01, que solo liste Kilos y la igualdad entre cod Ramos en Venta y Ramos
En HAVING que la Venta se haya facturado (FCABFA18) y que no este Anulada (FCABFA24)
El problema es que repite algunas lineas; pero... lo peor es que modificando fechas el resultado no es el mismo!
Entre 01/11 y 30/11 (repite al cliente Eduardo...)
Entre 15/11 y 30/11 (repite al cliente Catering, que esta antes de Eduardo, que ahora no repite)
Entre 18/11 y 20/11 (NO repite fila)
alguna idea del porque?, gracias