如果select子句中的语句(postgresql)

时间:2018-05-11 18:30:15

标签: sql postgresql greenplum

我想根据列值设置0或1标志。如果值为> 0.0 AND< = 99.0然后是1,否则为0。

              Score         flag_score

              0.083642      1
              0.009542      1
              0.999999      1
              101.0000      0

2 个答案:

答案 0 :(得分:3)

您是否尝试过case表达式?

select *, 
        (case when value > 0.0 and value <= 99.0 then 1 else 0 end) flag_score
from table;

答案 1 :(得分:1)

我会把它写成:

select t.*, ( (value > 0.0) and (value <= 99.0) )::int as flag_score
from t;

Postgres有一个很好的速记来声明标志,因此不需要case个表达式。

如果您想实际设置该值,您可以执行以下操作:

update t
    set flag = ( (value > 0.0) and (value <= 99.0) )::int;