Hola compañeros me encuentro un poco torpe no se si es por la hora o por que aun no me he acostado, perro llevo un rato y no consigo lo que quiero y os pido ayuda para que me ayudéis a como montar la siguiente consulta.
Lo que quiero hacer es recorrer por orden de código todos los clientes, y que me diga el total de lo comprado entre unas determinadas fechas, poniéndome 0 en los que no hayan comprado nada, así de esta manera, se puede ver que clientes ya no compran o no se les ha visitado nuevamente.
La estructura de las tablas Cliente y Facturas os la detallo a continuación:
CLIENTES
Código Delphi
[-]CREATE TABLE CLIENTES (
ID INTEGER NOT NULL,
CODIGO CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
NOMBRE V80 /* V80 = VARCHAR(80) */,
IMAGEN IMAGEN /* IMAGEN = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
OBSERVACIONES MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
FECHAALTA FECHA /* FECHA = DATE */,
ACTIVO LOGIC /* LOGIC = CHAR(1) */,
DESCUENTOMAXIMO POR /* POR = NUMERIC(15,4) */,
CODIGOFORMAPAGO CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
CODIGOIMPUESTO CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
DOCUMENTO V20 /* V20 = VARCHAR(20) */,
TIPODOCUMENTO V20 /* V20 = VARCHAR(20) */,
RETENCIONES POR /* POR = NUMERIC(15,4) */,
REQ POR /* POR = NUMERIC(15,4) */,
TAFIRA INTEGER,
DIASPRESENTACION V20 /* V20 = VARCHAR(20) */,
DIASCOBRO V20 /* V20 = VARCHAR(20) */,
AVISOS MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
LIMITECREDITO POR /* POR = NUMERIC(15,4) */,
PENDIENTEPAGO POR /* POR = NUMERIC(15,4) */,
AGENTE V20 /* V20 = VARCHAR(20) */,
SECTOR V40 /* V40 = VARCHAR(40) */,
DIRECCION V80 /* V80 = VARCHAR(80) */,
CODIGOPOSTAL V5 /* V5 = VARCHAR(5) */,
POBLACION V40 /* V40 = VARCHAR(40) */,
PROVINCIA V40 /* V40 = VARCHAR(40) */,
PAIS V20 /* V20 = VARCHAR(20) */,
TELEFONO V20 /* V20 = VARCHAR(20) */,
FAX V20 /* V20 = VARCHAR(20) */,
MOVIL V20 /* V20 = VARCHAR(20) */,
PERSONADECONTACTO V80 /* V80 = VARCHAR(80) */,
WEB V150 /* V150 = VARCHAR(150) */,
MAIL V80 /* V80 = VARCHAR(80) */,
LIBRE V80 /* V80 = VARCHAR(80) */,
USARREQ LOGIC /* LOGIC = CHAR(1) */,
DISTRIBUIDOR LOGIC /* LOGIC = CHAR(1) */
);
Y facturas
Código Delphi
[-]CREATE TABLE FACTURA (
ID INTEGER NOT NULL,
NUMERO CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
CODIGOCLIENTE CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
CODIGOAGENTE CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
TOTALCOMISION POR /* POR = NUMERIC(15,4) */,
CODIGOFORMAPAGO CODIGO /* CODIGO = VARCHAR(20) NOT NULL */,
IMPUESTO1 POR /* POR = NUMERIC(15,4) */,
IMPUESTO2 POR /* POR = NUMERIC(15,4) */,
IMPUESTO3 POR /* POR = NUMERIC(15,4) */,
IMPUESTO4 POR /* POR = NUMERIC(15,4) */,
IMPUESTO5 POR /* POR = NUMERIC(15,4) */,
PESOTOTAL POR /* POR = NUMERIC(15,4) */,
SUBTOTAL POR /* POR = NUMERIC(15,4) */,
TOTALIMPUESTOS POR /* POR = NUMERIC(15,4) */,
TOTAL POR /* POR = NUMERIC(15,4) */,
TOTALDESCUENTOS POR /* POR = NUMERIC(15,4) */,
SERIE V5 /* V5 = VARCHAR(5) */,
NOTA MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
FECHA FECHA /* FECHA = DATE */,
FECHAPAGO FECHA /* FECHA = DATE */,
COBRADA LOGIC /* LOGIC = CHAR(1) */,
RECARGOEQUIVALENCIA POR /* POR = NUMERIC(15,4) */,
LIBRE V80 /* V80 = VARCHAR(80) */,
PENDIENTECOBRO POR /* POR = NUMERIC(15,4) */,
RF V20 /* V20 = VARCHAR(20) */
);
El que los clientes que no hyan comprado entre las fechas dadas lo ponga a 0 es importante, ya que en el grid, los marcara en rojo, mientras que al resto en verde.
Claro esta que mejor si sólo aparece un registro por cliente con el total de todas las facturas que tenga en ese mes
Desde ya os doy las gracias, ahora me voy a dormir.