SQL - Ayuda con Select otra vez

 
Vista:

Ayuda con Select otra vez

Publicado por lissi (14 intervenciones) el 09/06/2006 19:54:33
HOLA PROGRAMADORES

El caso es el siguiente tengo que mostrar a TODOS los vendedores que esten en la tabla factura, el Total Dolares de la tabla facturadetalle y el TotalDolares de la tabla CXPNOTACREDITODETALLE para cada vendedor.
Es decir algo asi : Vendedor Total Factura TotalNota

El problema surge cuando en el where le paso alguna restriccion a la tabla CXPNOTACREDITO (esta comentado en el select de abajo) porque pierdo a todos los vendedores de la tabla factura y muestra solo los comunes entre ambas tablas. Pero es importante que le pase esas restriccion a la tabla CXPNOTACREDITO xq si no el calculo no estaria bien echo. Que puedo hacer?????

SELECT F.CODIGOVENDEDOR , SUM(FD.TOTALITEM)AS TFAC,
ISNULL(ROUND(SUM(ND.TOTALITEM)/(SELECT COUNT(DISTINCT(CODIGOVENDEDOR))FROM FACTURA),0,1),0)AS TNOTA
FROM FACTURADETALLE FD JOIN FACTURA F ON
FD.CODIGOEMP =F.CODIGOEMP AND
FD.TIPODOCUMENTO =F.TIPODOCUMENTO AND
FD.NUMEROSERIE = F.NUMEROSERIE AND
FD.NUMEROFACTURA= F.NUMEROFACTURA
LEFT JOIN CXPNOTACREDITO N ON
F.CODIGOVENDEDOR = N.CODIGOVENDEDOR
LEFT JOIN CXPNOTACREDITODETALLE ND ON
N.CODIGOEMP=ND.CODIGOEMP AND
N.NUMEROSERIE = ND.NUMEROSERIE AND
N.NUMERONOTACREDITO = ND.NUMERONOTACREDITO
JOIN CLIENTE C ON
F.CODIGOCLIENTE = C.CODIGOCLIENTE
LEFT JOIN CLIENTE CL ON
N.CODIGOCLIENTE = CL.CODIGOCLIENTE
WHERE
F.CODIGOEMP =001 AND
F.TIPODOCUMENTO IN(01,02)AND
F.CODIGOVENDEDOR <> 000001 AND
F.SITUACIONFACTURA <> 90 AND
F.TIPOFACTURA= 'F' AND
F.FECHAFACTURA BETWEEN '01/01/2005 00:00:00' AND '01/06/2006 23:00:00' AND
C.CODIGOTIPONEGOCIO IN('01','02','03','04','05','06','07') AND
C.ESTADOCLIENTE=01 --AND
-- N.CODIGOEMP =001 AND
-- N.SITUACIONNOTACREDITO <> 90 AND
-- N.FECHANOTACREDITO BETWEEN '01/01/2005 00:00:00' AND '01/06/2006 00:00:00'
GROUP BY F.CODIGOVENDEDOR

Si ejecuto la consulta de abajo como esta sale esto
VENDEDOR TFAC TNOTA
000002 6182 8.000000
000004 3246 1.000000
000005 1319 .000000

Pero si descomento cualquiera de las 3 ultimas linea de la consulta de abajo me aparece esto pierdo a los otros 2 vendedores. Lo que necesito es que se muestren todos los vendedores aunque en TNOTA tengan 0

VENDEDOR TFAC TNOTA
000002 6182 6.000000


Graxias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Select otra vez

Publicado por Urrunaga (15 intervenciones) el 15/06/2006 06:08:30
Estas lineas :
LEFT JOIN CXPNOTACREDITO N ON
F.CODIGOVENDEDOR = N.CODIGOVENDEDOR

Cambialas por estas:

Left Join (Select distinct codigovendedor
From cxpnotacredito
where CODIGOEMP =001 AND
SITUACIONNOTACREDITO <> 90 AND
CONVERT(CHAR(10),FECHANOTACREDITO,111)
--BETWEEN '01/01/2005 00:00:00' AND '01/06/2006 00:00:00'
BETWEEN '2005/01/01' AND '2006/06/01'
) n
on F.CODIGOVENDEDOR = N.CODIGOVENDEDOR

Ahora si tu relacionas varias tablas y dentro del Where final pones los filtros que no afectan a la tabla principal si no a varias, tu resultado no va a ser el esperado,para eso utiliza las subconsultas que te dara las pociones de datos necesarios para la relacion y muestreo.
Otra cosa convierte siempre a Char(10) tus campos fechas, es una recomendacion, asi te evitaras de bastantes problemas en el futuro,te lo digo por experiencia,alli te puse un ejemplo.
Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar