我有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
name
和b
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
我如何得到它?
答案 0 :(得分:0)
你不应该与0xc0000005
进行比较。请改用null
或is null
。
使用is not null
可以获得所需的结果。它返回第一个非空值。
COALESCE