加入2个表来获取所有原始数据。获取所有不同的连接列

时间:2017-06-22 12:34:04

标签: sql hive

我有2张类似的表格

CREATE TABLE arstel.b2b_join2(
id string
, name string
, col1 string
, col2 string
);

我用数据填充它们。第一张表。

INSERT INTO TABLE arstel.b2b_join1 VALUES
("1", "a", "a1", "a2")
, ("2", "b", "b1", "b2")
, ("3", "c", "c1", "c2")
, ("4", "d", "d1", "d2");

Secnd table

INSERT INTO TABLE arstel.b2b_join2 VALUES
("1", "a", "a11", "a22")
, ("2", "b", "b11", "b22")
, ("5", "e", "e11", "e22")
, ("6", "f", "f11", "f22");

我的查询

SELECT
CASE WHEN a.id = NULL THEN b.id ELSE a.id END AS id
, CASE WHEN a.name = NULL THEN b.name ELSE a.name END AS name
, a.col1
, a.col2
, b.col1
, b.col2
FROM arstel.b2b_join1 a
FULL OUTER JOIN arstel.b2b_join2 b
ON a.id = b.id AND a.name = b.name;

返回表格a中的所有值,但不会从id

返回nameb
4       d       d1      d2      NULL    NULL
1       a       a1      a2      a11     a22
NULL    NULL    NULL    NULL    e11     e22
2       b       b1      b2      b11     b22
NULL    NULL    NULL    NULL    f11     f22
3       c       c1      c2      NULL    NULL

我真正想要的是

4       d       d1      d2      NULL    NULL
1       a       a1      a2      a11     a22
5       e       NULL    NULL    e11     e22
2       b       b1      b2      b11     b22
6       f       NULL    NULL    f11     f22
3       c       c1      c2      NULL    NULL

我如何得到它?

1 个答案:

答案 0 :(得分:0)

你不应该与0xc0000005进行比较。请改用nullis null

使用is not null可以获得所需的结果。它返回第一个非空值。

COALESCE