从多个视图插入值

时间:2018-12-28 01:08:17

标签: hive hiveql

我有三个视图,reembolsos_v,tarjetas_v和no_pagos_v。我想将这些视图的值插入到名为acciones的表中。

reembolsos_v的列如下:

hora             reembolsos
00               2
02               13
03               39

tarjetas_v的列如下:

hora             tarjetas
00               6
02               12
03               42

no_pagos_v的列如下:

hora             no_pagos
00               3
01               2
03               11

表acciones包含以下列:

hora             pagocr           pago          no_pago

我想通过以下方式将三个视图的列值插入表acciones:在表acciones的列hora中插入视图的列horas的值,在列pagocr中,我想插入column的值reembolsos,我想在pago列中插入tarjetas列的值,并在表格acciones的no_pago列中插入我的编号no_pagos的值。

我尝试了以下查询:

INSERT INTO acciones(hora,pagocr,pago,no_pago) 
SELECT r.hora, r.reembolsos, t.tarjetas, n.no_pagos FROM 
reembolsos_v AS r, tarjetas_v AS t, no_pagos_v AS n

此查询的结果如下:

hora      pagocr      pago      no_pago
00        2           6         3 
00        2           6         2
00        2           6         11

这不是正确的结果。正确的结果如下:

hora      pagocr      pago      no_pago
00        2           6         3
02        13          12        null
03        49          32        11

如何获得正确的结果?

谢谢

1 个答案:

答案 0 :(得分:0)

问题中显示的查询执行的是Caterian乘积,即一个表中的每一行都与另一表中的所有其他行连接在一起。但是,在这种情况下,需要full join

SELECT COALESCE(r.hora,t.hora,n.hora) as hora,r.reembolsos,t.tarjetas,n.no_pagos 
FROM reembolsos_v r 
FULL JOIN tarjetas_v t on t.hora = r.hora
FULL JOIN no_pagos_v n on n.hora = t.hora