Buenos días compañeros.
Tengo un problemita y espero puedan ayudarme.
Tengo una tabla(TABLA A) que esta compuesta por 3 campos (DATE, TERRY, PRODUCT)
y en otra tabla(TABLA B) tengo la informacion de la ganancia generada por cada producto, en su territorio para un periodo o mes especifico; ademas de muchos otros datos que no vienen al caso.
La cosa esta en que a veces un territorio no genera ganancia para un producto y por supuesto no se especifica en la TABLA B. Sin embargo yo necesito que, si no existe el registro en la TABLA B, me devuelva un 0 en la consulta.
La consulta que he fabricado para este caso es la siguiente:
SELECT DATE, TERRY, PRODUCT, SUM(GANANCIA)
FROM TABLA_A LEFT JOIN TABLA_B C
ON C.PRD_END_DT = DATE AND C.SALES_TERRY_CD = TERRY AND C.P_SAP = PRODUCT
GROUP BY DATE, TERRY, PRODUCT
El problema es que este query solo retorna los valores que coincidan de la TABLA A con los de la TABLA B, cuando segun entiendo; la sentencia LEFT OUTER JOIN retorna todos los valores contenidos en la tabla de la izquierda y solo los que concuerden de la tabla de la derecha.
La Tabla A esta estructurada mas o menos de la siguiente manera:
DATE------- TERRY -- PRODUCT
01-2011--- 1-------- A
01-2011--- 1-------- B
01-2011--- 1-------- C
Y la consulta que fabrique devuelve lo siguiente:
DATE------- TERRY -- PRODUCT----Ganancia
01-2011--- 1-------- A--------------10
01-2011--- 1-------- B--------------20
Espero haberme explicado y de antemano, gracias por su ayuda.