在计算列 postgresql 中使用 case 表达式

Using case expressions in a calculated column postgresql

已编辑以提供示例数据 我正在尝试创建一个计算列来计算其他 2 列的总和,这应该很容易。但是,两列中的某些值都是空值,因此我想使用 case 表达式将两列中的空值替换为 0,然后将结果值相加。另一个复杂因素是第二列包含带逗号的文本值,在添加它们之前需要将其转换为数字。我目前正在尝试做的是:

SELECT (case when pm."PS" is null then 0 else pm."PS" end) + (case when pm."PS-PREV1" is null then 0 else replace(pm."PS-PREV1", ',', '')::numeric end) AS "Sales"
FROM pm

示例数据:

PS PS-PREV1
20000 null
30000 20,000
null null
null 30,000

期望的输出:

output
20000
50000
0
30000

这只是返回第一列的值,而不在第二列中添加。我哪里错了?我是不是想多了?

你的代码应该可以工作,但是你可以把它写得更干净一点:

SELECT COALESCE(pm."PS",0) 
       + COALESCE(replace(pm."PS-PREV1", ',', '')::numeric,0) AS "Sales"
FROM pm