如果一个或多个字段为空,如何添加三个值(C1,C2,C3中的值)?我希望将null添加为零,并将总数添加到新字段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
理想情况下,我还要添加第五列,以基于字段4中的值将这些值分组为“ 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";
答案 0 :(得分:0)
一种使用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)
) s