在postgresql中,我尝试使用case来计算某个值,然后再做另一件事。但是,我不仅需要检查两件事,而且必须按连续顺序检查。
例如,假设我有3列:col1、col2和col3。我想先检查col1是否大于0。检查完这个之后,我想检查col2是否大于0。如果是这样,我将创建另一个列,它将是所有列的总和。但是,我不能这样做:
select case when col1>0 and col2>0 then col1+col2+col3 end as...
我需要这样做:
select case when col1>0 then (case when col2>0 then col1+col2+col3) else NULL end as...
但这行不通。那么,我能做什么?
1条答案
按热度按时间cidc1ykv1#
你很接近。你可以做:
你错过了内心世界
end
.顺便说一下,一个
CASE
表达式的计算结果为NULL
当没有when
子句匹配。因此,else NULL
是多余的。