将 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
所以你需要使用if
或case 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
。
我有一个为 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
所以你需要使用if
或case 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
。