1

我想知道是否可以对合并中使用的值求和,即使其中一些为空。目前,如果来自 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。

谢谢

4

1 回答 1

1

合并

COALESCE 函数返回其第一个非空参数。只有当所有参数都为 null 时才返回 Null。当检索数据以进行显示时,它通常用于将默认值替换为空值

SELECT COALESCE (t1.item_a, t2.item_a, 0) +
       COALESCE (t1.item_b, t2.item_b, 0) +
       COALESCE (t1.item_c, t2.item_c, 0) as item_sumA,
       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

小提琴

于 2021-10-26T01:24:33.047 回答