我想知道是否可以对合并中使用的值求和,即使其中一些为空。目前,如果来自 coalesce 的任何值返回 null,则总和的结果也为 null。
这是一个基本案例的 SQL 小提琴: http ://sqlfiddle.com/#!17/9eecb/83134
CREATE TABLE IF NOT EXISTS table1 (
item_a INT,
item_b INT,
item_c INT
);
CREATE TABLE IF NOT EXISTS table2 (
item_a INT,
item_b INT,
item_c INT
);
INSERT INTO table1(item_a, item_b, item_c)
VALUES (3, NULL, NULL);
INSERT INTO table2(item_a, item_b, item_c)
VALUES (NULL, 2, NULL);
SELECT (NULLIF(COALESCE (t1.item_a, t2.item_a),0) +
NULLIF(COALESCE (t1.item_b, t2.item_b),0) +
NULLIF(COALESCE (t1.item_c, t2.item_c),0)) as item_sum,
COALESCE (t1.item_a, t2.item_a) as item_a,
COALESCE (t1.item_b, t2.item_b) as item_b,
COALESCE (t1.item_c, t2.item_c) as item_c
FROM table1 t1, table2 t2
前面的查询应该返回 5 作为 item_sum (3 + 2)。但是,两个表中的最后一列 item_c 均为空,因此结果为 NULL 而不是 5。
谢谢