ParseException 行 5:19 无法识别表达式规范中接近 'SELECTMIN(' 的输入(状态 = 42000,代码 = 40000)



我在 hive 上运行以下查询

SELECT 
  a.NDC,
  a.filetag,
  b.filetag AS filetag_RMIID1,
  a.medid,
  b.MED_REF_FED_LEGEND_IND,
  b.MED_MEDID_DESC
FROM 
  TMPTBL_RMINDC1_MERGED_SORTED_ND a
  INNER JOIN TMPTBL_RMIID1_MERGED_SORTED_ND b ON a.medid = b.medid
WHERE 
  b.filetag = (SELECT MIN(c.filetag) FROM TMPTBL_RMIID1_MERGED_SORTED_ND c WHERE c.medid = a.medid AND c.filetag >= a.filetag)

并低于错误

Error: Error while compiling statement: FAILED: ParseException line 
5:19 cannot recognize input near 'SELECT' 'MIN' '(' in expression 
specification (state=42000,code=40000)

请帮我解决这个问题。

Hive 仅支持 where 子句子查询中的IN/NOT IN, EXISTS/NOT EXISTS。在您的查询中,将 where 条件替换为以下内容,它应该可以工作:

b.filetag in (SELECT MIN(c.filetag) FROM TMPTBL_RMIID1_MERGED_SORTED_ND c 
WHERE c.medid = a.medid AND c.filetag >= a.filetag)

有关 hive 子查询支持的更多详细信息,请参阅此处:配置单元子查询

最新更新