首页 > 解决方案 > 蜂巢表匹配并在不同的列中选择值

问题描述

我有一个输入表:

c_no    acc_no  acc_line_no ref_acc ref_acc_item    bt_no
4           a12          50   39080           40    0
4           a13          10   39080           10    0
4           a14          20   39080           20    0
4           a15          30   39080           21    20
4           a16          40   39080           30    0
4           a17          31                    0    20

问题:ref_acc_item 和 bt_no 对于相同的 c_no 为零或空白;

解析度:

如果 ref_item 为空,则 bt_no 中的值 20 需要与 acc_line_no 匹配(此处第 3 行匹配 20)并将 ref_acc 设置为第 3 行中的 ref_acc 值,并将 ref_acc_item 设置为 20,如 bt_no

输出表:

 c_no   acc_no  acc_line_no ref_acc ref_acc_item    bt_no
4           a12          50   39080           40    0
4           a13          10   39080           10    0
4           a14          20   39080           20    0
4           a15          30   39080           21    20
4           a16          40   39080           30    0
4           a17          31   39080           20    20

请帮助我在 Hive 中实现这一目标。提前致谢

标签: hivehiveql

解决方案


您可以通过if声明轻松做到这一点

select 
c_no,
acc_no,
acc_line_no,
ref_acc,
if(ref_acc_item = "0" or ref_acc_item = "", bt_no, ref_acc_item ),
bt_no
from yourtable

推荐阅读