配置单元表匹配并在另一个列中选择值

时间:2018-10-19 19:18:46

标签: hive hiveql

我的输入表为:

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中实现这一目标。预先感谢

1 个答案:

答案 0 :(得分:0)

您可以使用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