Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/03/2008, 23:41
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 23 años
Puntos: 7
Re: Suma extraña, porque pasa ????...

Intenta con algo como esto:
Código:
SELECT        p.des_prod AS Producto,  
            ISNULL(ap.cant_produccion, 0) -
            ISNULL(sal.cant_sal, 0) +
            ISNULL(ccd.cant_ccd, 0) -
            ISNULL(ods.cant_prod_od, 0)  AS Existencia
FROM        g_productos AS p
LEFT JOIN    (
                SELECT    cod_prod, SUM(cant_prod_od) AS cant_prod_od
                FROM    a_ods_prod
                GROUP BY cod_prod
            ) AS ods
            ON ods.cod_prod = p.cod_prod
LEFT JOIN    (
                SELECT    cod_prod, SUM(cant_ccd) AS cant_ccd
                FROM    a_ccd_prod 
                GROUP BY cod_prod
            ) AS ccd
            ON ccd.cod_prod = p.cod_prod 
LEFT JOIN    (
                SELECT    cod_prod, SUM(cant_produccion) AS cant_produccion
                FROM    a_produccion
                GROUP BY cod_prod
            ) AS ap
            ON ap.cod_prod = p.cod_prod 
LEFT JOIN    (
                SELECT    cod_prod, SUM(cant_sal) AS cant_sal
                FROM    a_sal_prod 
                GROUP BY cod_prod
            ) AS sal
            ON sal.cod_prod = p.cod_prod
WHERE        p.cod_prod = 5
GROUP BY    p.des_prod, p.cod_prod
Basicamente obtienes los totales por producto para cada tabla antes de hacer la operación que te interesa. Pero la forma en que tienes la consulta me parece correcta. La única explicación que se me ocurre para el comportamiento que tiene es que en la tabla tengas registros duplicados en alguna de ellas.