回答

收藏

Hive JOIN中同时遇到左右别名;没有任何不平等条款

技术问答 技术问答 292 人阅读 | 0 人回复 | 2023-09-14

我正在使用以下查询:
/ Q: `' V# c: u" r/ k1 n5 c+ uSelect/ m$ H9 ?& y7 X4 j; }& W
   S.MDSE_ITEM_I,
+ y4 r. B( K% I4 A! _7 H   S.CO_LOC_I,$ n, U) [& I8 ^
   MAX(S.SLS_D) as MAX_SLS_D,3 V0 \. u2 e8 Q6 h( j
   MIN(S.SLS_D) as MIN_SLS_D,! L( }2 {% p. E( L
   sum(S.SLS_UNIT_Q) as SLS_UNIT_Q,
* J" Y5 v$ A2 V/ W: g: y- g( x6 A   MIN(PRSMN_VAL_STRT_D) as PRSMN_VAL_STRT_D,- T+ @+ e; K! t7 q. a
   MIN(PRSMN_VAL_END_D) as PRSMN_VAL_END_D,
1 Z% @* E' T! x. N7 P5 i% K   MIN(RC.FRST_RCPT_D) as FRST_RCPT_D,, |- d9 y: ?2 U0 u" z( I
   MIN(RC.CURR_ACTV_FRST_OH_D) as CURR_ACTV_FRST_OH_D,
. z$ G7 f" X* {' ~4 D; U   MIN(H.GREG_D) as  OH_GREG_D  . ~% H- j6 C' o
from
% \) G. ]$ H5 ]% F   eefe_lstr4.SLS_TBL as S  
8 E0 f1 ?. T& y+ [$ h+ j4 Oleft outer join3 [' v/ M# Q: D5 H) J* P
   eefe_lstr4.PRS_TBL P
$ U. {; K4 Q4 Q7 h% e/ m, {      on S.MDSE_ITEM_I = P.MDSE_ITEM_I + c2 J' Y' }# C4 ^' @. C1 C: I
      and S.CO_LOC_I = P.CO_LOC_I
2 r" F0 B" f8 G& f" _' C      and S.SLS_D between PRSMN_VAL_STRT_D and PRSMN_VAL_END_D  
! j: ], T; R/ F+ w$ gleft outer join
3 Y+ I$ p. o( P   eefe_lstr4.OROW_RCPT RC   n! h3 _& w" q, d+ `
      on RC.MDSE_ITEM_I =S.MDSE_ITEM_I
( j- {) U# w% o" m4 l* k/ x      and RC.CO_LOC_I =  S.CO_LOC_I  - V4 ?2 G$ w) z- t; t; M
left outer join) e& ~# Q! d6 c$ L; L- E
   eefe_lstr4.OH H ! }0 ~0 x! ?+ z; C5 i2 x  A3 x
      on H.MDSE_ITEM_I =S.MDSE_ITEM_I 4 n& {/ A6 j" r
      and H.CO_LOC_I = S.CO_LOC_I  
7 i4 s8 i7 N# `* u3 p* igroup by
( H! @, x' ]. u$ d1 G   S.MDSE_ITEM_I,7 B" d1 A0 y& r6 d0 w
   S.CO_LOC_I;5 r; o2 e0 R; w! ]
我收到错误消息:
; f$ I9 H* T  W% G* A2 z, j1 k
+ I: ^/ V1 H3 B; y失败:SemanticException行0:-1在JOIN’PRSMN_VAL_END_D’中同时遇到左右别名% H6 f* n# c- p8 {, ]" U  l7 M

0 V% G* r! y' @* V! ^; B  _搜索表明,当查询中有不相等子句时,就会出现此错误。但是,即使在出现此错误的情况下,我也没有使用任何不等式子句(=在我的查询(just=和between)中)。2 e& N" y6 x8 b/ n; Z. P- H
                3 T' u8 q3 r. J8 U- S/ X5 b
解决方案:& h* c3 u5 k* r* }  v" `" C
               
' j; M8 {# |; c& y; H" o
0 p, M6 d/ ^( m+ ^4 L3 t! w0 W7 U0 R. ~
                尝试将不等式条件从on子句移到where条件。2 P4 |7 d) ?4 b4 d* Z  O
Select S.MDSE_ITEM_I,S.CO_LOC_I,
+ X& g# X" V5 l$ \% C* x       MAX(S.SLS_D) as MAX_SLS_D,+ [, t7 g+ Y) |3 @' }
       MIN(S.SLS_D) as MIN_SLS_D,$ X) q- {) U0 t" W
       sum(S.SLS_UNIT_Q) as SLS_UNIT_Q,
' ?8 G* F: c# r- M       MIN(PRSMN_VAL_STRT_D) as PRSMN_VAL_STRT_D,: C  n4 p4 x( y
       MIN(PRSMN_VAL_END_D) as PRSMN_VAL_END_D," j+ x) u2 t) |9 Z2 p
       MIN(RC.FRST_RCPT_D) as FRST_RCPT_D,2 t3 S& z% e" U# E8 g
       MIN(RC.CURR_ACTV_FRST_OH_D) as CURR_ACTV_FRST_OH_D,+ G9 y% b/ V" H/ _- b9 q
       MIN(H.GREG_D) as  OH_GREG_D
. c, X8 K4 `9 K$ ^, f* c, I4 a" }from eefe_lstr4.SLS_TBL as S
0 c% U" F+ x! O0 E7 a         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 3 k' X% H$ s% x. l
         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_I5 m; t( L) `* |* M) ]# e3 L! k5 }6 ^
         left outer join eefe_lstr4.OH H on H.MDSE_ITEM_I =S.MDSE_ITEM_I and H.CO_LOC_I = S.CO_LOC_I0 C. O9 e' L0 I
where(S.SLS_D between PRSMN_VAL_STRT_D and PRSMN_VAL_END_D)
& Z: f' j  |$ D. d0 ygroup by S.MDSE_ITEM_I, S.CO_LOC_I;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则