我正在使用以下查询:
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
and S.SLS_D between PRSMN_VAL_STRT_D and PRSMN_VAL_END_D
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
group by
S.MDSE_ITEM_I,
S.CO_LOC_I;
我说的是错误的:
失败:semanticexception行0:-1在联接“prsmn\u val\u end\d”中同时遇到左别名和右别名
搜索显示,当查询中有不等式子句时,会出现此错误。然而,我没有使用任何不平等条款( <=
或者 >=
在我的问题(只是 =
以及 between
)即使这样,我也会犯这个错误。
3条答案
按热度按时间vsnjm48y1#
你说得对。where子句应包含可能删除记录的空值:
其中(prsmn\u val\u strt\u d为空)或(prsmn\u val\u strt\u d和prsmn\u val\u end\u d之间的s.sls\u d)
prdp8dxp2#
尝试将不等式条件从on子句移到where条件。
yws3nbqq3#
我看到这种方法的问题是,因为
left outer join
,这意味着如果我们将条件移到where
子句,然后是右表列所在的寄存器null
我们迷路了。