Sentencia SQL erronea
Publicado por KoBe (2 intervenciones) el 21/02/2007 14:52:03
Buenas a tod@s. Tengo una consulta creada en SQL que, se supone, es la que tengo que utilizar para lo que me piden en el trabajo:
SELECT DISTINCTROW IIf(IsNull([razon social]),[nombre empresa],[razon social]) AS razonsocial, [MAESTRO CLIENTES].cif, Count([FACTURAS VENTA CABECERAS].[numero factura]) AS [CuentaDenumero factura], Sum([FACTURAS VENTA CABECERAS].ImporteTotalEuros) AS importe, [MAESTRO CLIENTES].[codigo postal], [MAESTRO CLIENTES].pais, [MAESTRO CLIENTES].ciudad, Year([fecha factura]) AS año, [FACTURAS VENTA CABECERAS].a_iva, [FACTURAS VENTA CABECERAS].cliente
FROM [MAESTRO CLIENTES] INNER JOIN [FACTURAS VENTA CABECERAS] ON [MAESTRO CLIENTES].[codigo cliente] = [FACTURAS VENTA CABECERAS].cliente
WHERE ((([FACTURAS VENTA CABECERAS].[es B])=0))
GROUP BY IIf(IsNull([razon social]),[nombre empresa],[razon social]), [MAESTRO CLIENTES].cif, [MAESTRO CLIENTES].[codigo postal], [MAESTRO CLIENTES].pais, [MAESTRO CLIENTES].ciudad, Year([fecha factura]), [FACTURAS VENTA CABECERAS].a_iva, [FACTURAS VENTA CABECERAS].cliente
HAVING (((Sum([FACTURAS VENTA CABECERAS].ImporteTotalEuros))>3005.06) AND (([MAESTRO CLIENTES].pais)="01") AND ((Year([fecha factura]))=2005) AND (([FACTURAS VENTA CABECERAS].a_iva)=True))
ORDER BY IIf(IsNull([razon social]),[nombre empresa],[razon social]);
El problema es que, según entiendo la consulta, me va a devolver los clientes que hayan pagado mas de 3.005€ de facturas en 2005, hasta ahi me va bien. Ahora, hay distintos códigos de cliente para empresas iguales (mismo CIF), por lo que, si una empresa con un codigo de cliente X ha pagado menos de 3.005€ y la misma empresa con un codigo de cliente Y ha pagado mas, solo me va a aparecer en la busqueda la empresa del codigo Y. Esto no me vale porque necesito que aparezca esa empresa con todos sus codigos de cliente y con todos sus pagos para poder sumarlos.
Despues de este tostón, mi pregunta es: ¿como tendria que ser esta formula para lo que yo necesito, teniendo en cuenta lo de los distintos códigos de cliente para un mismo CIF?
Se que es un poco liosa la pregunta, si alguien me puede ayudar intentare exponerlo con mas claridad.
Gracias de antemano y salu2
SELECT DISTINCTROW IIf(IsNull([razon social]),[nombre empresa],[razon social]) AS razonsocial, [MAESTRO CLIENTES].cif, Count([FACTURAS VENTA CABECERAS].[numero factura]) AS [CuentaDenumero factura], Sum([FACTURAS VENTA CABECERAS].ImporteTotalEuros) AS importe, [MAESTRO CLIENTES].[codigo postal], [MAESTRO CLIENTES].pais, [MAESTRO CLIENTES].ciudad, Year([fecha factura]) AS año, [FACTURAS VENTA CABECERAS].a_iva, [FACTURAS VENTA CABECERAS].cliente
FROM [MAESTRO CLIENTES] INNER JOIN [FACTURAS VENTA CABECERAS] ON [MAESTRO CLIENTES].[codigo cliente] = [FACTURAS VENTA CABECERAS].cliente
WHERE ((([FACTURAS VENTA CABECERAS].[es B])=0))
GROUP BY IIf(IsNull([razon social]),[nombre empresa],[razon social]), [MAESTRO CLIENTES].cif, [MAESTRO CLIENTES].[codigo postal], [MAESTRO CLIENTES].pais, [MAESTRO CLIENTES].ciudad, Year([fecha factura]), [FACTURAS VENTA CABECERAS].a_iva, [FACTURAS VENTA CABECERAS].cliente
HAVING (((Sum([FACTURAS VENTA CABECERAS].ImporteTotalEuros))>3005.06) AND (([MAESTRO CLIENTES].pais)="01") AND ((Year([fecha factura]))=2005) AND (([FACTURAS VENTA CABECERAS].a_iva)=True))
ORDER BY IIf(IsNull([razon social]),[nombre empresa],[razon social]);
El problema es que, según entiendo la consulta, me va a devolver los clientes que hayan pagado mas de 3.005€ de facturas en 2005, hasta ahi me va bien. Ahora, hay distintos códigos de cliente para empresas iguales (mismo CIF), por lo que, si una empresa con un codigo de cliente X ha pagado menos de 3.005€ y la misma empresa con un codigo de cliente Y ha pagado mas, solo me va a aparecer en la busqueda la empresa del codigo Y. Esto no me vale porque necesito que aparezca esa empresa con todos sus codigos de cliente y con todos sus pagos para poder sumarlos.
Despues de este tostón, mi pregunta es: ¿como tendria que ser esta formula para lo que yo necesito, teniendo en cuenta lo de los distintos códigos de cliente para un mismo CIF?
Se que es un poco liosa la pregunta, si alguien me puede ayudar intentare exponerlo con mas claridad.
Gracias de antemano y salu2
Valora esta pregunta


0