Impala / Hive-汇总调整代码的金额

时间:2019-02-19 22:46:07

标签: hive hiveql impala

我有一个名为REV的Impala表,其中包含wire_code和每个电汇代码的金额

+---------+------+
|wire_code| amt  |
+---------+------+
| abc     | 100  |
+---------+------+
| def     | 50   | 
+---------+------+
| ghi     | 250  |
+---------+------+
| jkl     | 300  |
+---------+------+

另一个表是FA,它具有wire_code和Ajusted_wire_code。

+---------+------+
|wire_code|adj_wc|
+---------+------+
| abc     | def  |
+---------+------+
|  ghi    | jkl  |
+---------+------+

我需要调整电汇代码的数量,该金额在FA表中可作为adj_wc使用。 例如:

FA表中有“ abc”,并将其调整为“ def”,那么我的输出应该是-wire_code“ def”的数量为(abc + def),如下所示。 “ abc”金额将保持不变。

+---------+------+
|wire_code| amt  | 
+---------+------+
| abc     | 100  |  
+---------+------+
| def     | 150  |
+---------+------+
| ghi     | 250  |
+---------+------+
| jkl     | 550  |
+---------+------+

请帮助此查询。 预先感谢!

1 个答案:

答案 0 :(得分:2)

使用两个联接:

select r.wire_code, r.amt+coalesce(a.amt,0) as amt
  from REV r
       left outer join FA f on r.wire_code=f.adj_wc     --adjustments
       left outer join REV a on f.wire_code=a.wire_code --adjusted amount
;