Saltar al contenido

Ambos alias izquierdo y derecho encontrados en Hive JOIN; sin cláusula de desigualdad

Este grupo de especialistas luego de días de investigación y de juntar de datos, dimos con la solución, esperamos que resulte útil para ti en tu proyecto.

Solución:

Trate de mover la condición de desigualdad de la cláusula on a la condición where.

Select S.MDSE_ITEM_I,S.CO_LOC_I,
       MAX(S.SLS_D) as MAX_SLS_D,
       MIN(S.SLS_D) as MIN_SLS_D,
       sum(S.SLS_UNIT_Q) as SLS_UNIT_Q,
       MIN(PRSMN_VAL_STRT_D) as PRSMN_VAL_STRT_D,
       MIN(PRSMN_VAL_END_D) as PRSMN_VAL_END_D,
       MIN(RC.FRST_RCPT_D) as FRST_RCPT_D,
       MIN(RC.CURR_ACTV_FRST_OH_D) as CURR_ACTV_FRST_OH_D,
       MIN(H.GREG_D) as  OH_GREG_D
from eefe_lstr4.SLS_TBL as S
         left outer join eefe_lstr4.PRS_TBL P on S.MDSE_ITEM_I = P.MDSE_ITEM_I and S.CO_LOC_I = P.CO_LOC_I 
         left outer join eefe_lstr4.OROW_RCPT RC on RC.MDSE_ITEM_I =S.MDSE_ITEM_I and RC.CO_LOC_I =  S.CO_LOC_I
         left outer join eefe_lstr4.OH H on H.MDSE_ITEM_I =S.MDSE_ITEM_I and H.CO_LOC_I = S.CO_LOC_I
where(S.SLS_D between PRSMN_VAL_STRT_D and PRSMN_VAL_END_D)
group by S.MDSE_ITEM_I, S.CO_LOC_I;

El problema que veo con este enfoque es que, debido a que hay una left outer joineso significa que queremos tener todos los registros de mesa izquierda solo una vez, si movemos las condiciones a where cláusula, entonces aquellos registros donde columnas de la tabla derecha están null Esta perdido.

estás bien. La cláusula where debe incluir valores nulos donde los registros podrían descartarse:

donde (PRSMN_VAL_STRT_D ES NULL) o (S.SLS_D entre PRSMN_VAL_STRT_D y PRSMN_VAL_END_D)

Te mostramos comentarios y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *