0

我正在尝试以下操作:

选择 ta_end_datetime_berekenen = 'Y' 然后领先(ta_update_datetime)超过(按 dn_waarde_van 分区,按 ta_update_datetime 排序的 dn_waarde_tot 顺序)否则 ea_end_datetime 结束 ea_end_datetime、ta_insert_datetime、ta_update_datetime 来自 tmp_wtdh_bestedingsklasse_10_s2_stap2

但是,当我尝试这样做时,出现以下错误:

NoViableAltException(86@[129:7: ( ( ( KW_AS )? identifier ) | ( KW_AS LPAREN identifier ( COMMA identifier )* RPAREN ) )?])

失败:ParseException 行 1:175 在选择目标行 1:254 的 'over' 附近缺少 KW_END 无法识别选择目标中的 'else' 'ea_end_datetime' 'end' 附近的输入

假设不可能将分析函数包装在另一个函数中,我是否正确?

这是 Hive 0.11。

4

1 回答 1

3

不确定这是您问题的根源,但您的查询似乎缺少AS关键字(请注意下面第 8 行的全部大写AS)。

select 
    case 
        when ta_end_datetime_berekenen = 'Y' 
    then 
        lead(ta_update_datetime) over ( partition by dn_waarde_van, dn_waarde_tot order by ta_update_datetime ) 
    else 
        ea_end_datetime 
    end AS ea_end_datetime, 
    ta_insert_datetime, 
    ta_update_datetime 
from tmp_wtdh_bestedingsklasse_10_s2_stap2
于 2013-05-30T09:50:58.407 回答