如果其中一个或多个字段为空,如何添加三个值( C1、C2、C3中的值)?我希望它将空值添加为零,并将总数放入新的字段4中。现在,如果至少有一个值为null,我的查询将返回null。
例如,这就是正在发生的事情(第二行,第四个字段显示为空,因为第二个字段为空)
1 | 3 | 5 | 9
2 | NULL | 3 | NULL
8 | 1 | 1 | 10例如,这就是我希望在我的返回集中发生的事情
1 | 3 | 5 | 9
2 | NULL | 3 | 5
8 | 1 | 1 | 10理想情况下,我还想添加第五列,根据字段四中的值将这些值分组为"1-3“、"4-6”、"7-10“。诚然,我不知道如何做这一部分-任何帮助或提示将是有帮助的。
1 | 3 | 5 | 9 | 7-10
2 | NULL | 3 | 5 | 4-6
8 | 1 | 1 | 10 | 7-10我在PostgreSQL工作已经有几年了,所以我猜我只是把一些简单的事情搞砸了。如果你对我下面的问题有任何帮助,我将不胜感激。
SELECT "FIELD ONE", "FIELD TWO", "FIELD THREE", "FIELD ONE + FIELD TWO + FIELD THREE" AS "TOTAL FIELD" FROM "Table1";
发布于 2019-02-03 11:44:54
一种方法是使用coalesce()
select t.*,
(coalesce(field1, 0) + coalesce(field2, 0) + coalesce(field3, 0)
) as total
from t;然后,您可以使用case表达式。但是,我也喜欢使用横向连接:
select t.*,
(case when total <= 3 then '1-3'
when total <= 6 then '4-6'
else '7-10'
end) as range
from t left join lateral
(select sum(field) as total
from (values (field1), (field2), (field3)) v(field)
) shttps://stackoverflow.com/questions/54499765
复制相似问题