将 DB2 MAX(DECODE 转换为 HIVE

Convert DB2 MAX(DECODE to HIVE

我有一个为 DB2 编写的代码,现在需要为 Hive 重写它,但我无法找到 MAX(HIVE 中的 DECODE

的等效代码

我当前的密码

 SELECT
            E.CHARGE_ARRANGEMENT_NUMBER ,
            E.MIG_MAIN_PROD_CODE ,
            MAX(DECODE(UPPER(E.MIG_EXTRA_ACTION), 'KEEP', E.MIG_EXTRA_ACTION)) AS EXTRAS_KEEP ,
            MAX(DECODE(UPPER(E.MIG_EXTRA_ACTION), 'DROP', E.EXTRAS_LIST)) AS EXTRAS_DROP
        FROM
            EXTRA_MAPPINGS_PRE E
        GROUP BY
            E.CHARGE_ARRANGEMENT_NUMBER ,
            E.MIG_MAIN_PROD_CODE

所以你需要使用ifcase when then end

 SELECT
            E.CHARGE_ARRANGEMENT_NUMBER ,
            E.MIG_MAIN_PROD_CODE ,
            MAX(IF(UPPER(E.MIG_EXTRA_ACTION) ='KEEP', E.MIG_EXTRA_ACTION,null) ) AS EXTRAS_KEEP ,
            MAX(IF(UPPER(E.MIG_EXTRA_ACTION) ='DROP', E.EXTRAS_LIST,null)) AS EXTRAS_DROP
        FROM
            EXTRA_MAPPINGS_PRE E
        GROUP BY
            E.CHARGE_ARRANGEMENT_NUMBER ,
            E.MIG_MAIN_PROD_CODE

如果您对 if 不满意,可以使用 case-when