1

我只想用 '' 替换特定列中的 '' 或 '0.00' 值,而不添加新列。我试图做如下但它不工作。

数据库列:

  id    rt1     rt2
   x    0.345   
   y    0.00    0.345

预期结果:

 id rt1     rt2   new column
  x 0.345            0.345
  y 0.00    0.345    0.345

根据对话,以下是我的预期结果。

 id      rt1    rt2      new column
 'a'    0.345,  null     0.345
 'b'    0.00,  0.345     0.345
  'c'   0.345, 0.445     more 0.00 values cant be in both columns
  'd'   0.445, 0.345     more 0.00 values cant be in both columns
 'e'    0.00,  0.00      null
 'f'    0.00,  null      null
 'g'    null,  0.00      null

我的条件:如果 rt1 为 0.00 或 '',则 '' 否则 rt1。r2 相同,然后创建新列。

SELECT id,
   CASE WHEN rt1 = '0.00' THEN '' ELSE rt1 END AS rt1,
   CASE WHEN rt2 = '0.00' THEN '' ELSE rt2 END AS rt2,
   Case when rt1 != ''  then rt1 else rt2 end as new_rt_column
   
FROM tablename;
4

1 回答 1

0

您可以使用该函数GREATEST()获取 2 个值中的最大值,并在最大值为时NULLIF()返回:null0.00

SELECT id, 
       rt1, 
       rt2,
       NULLIF(GREATEST(NULLIF(rt1, '')::float, NULLIF(rt2, '')::float), 0) AS new_rt_column
FROM tablename;

请参阅演示

于 2022-01-06T18:10:19.517 回答