如何在sql中使用连续条件子句?

dhxwm5r4  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(468)

在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...

但这行不通。那么,我能做什么?

cidc1ykv

cidc1ykv1#

你很接近。你可以做:

select 
  case when col1 > 0 then case when col2 > 0 then col1 + col2 + col3 end
       else NULL end as my_column1

你错过了内心世界 end .
顺便说一下,一个 CASE 表达式的计算结果为 NULL 当没有 when 子句匹配。因此, else NULL 是多余的。

相关问题