【发布时间】:2021-01-06 21:32:58
【问题描述】:
已编辑以提供示例数据 我正在尝试创建一个计算列,将其他 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 |
这只是返回第一列的值而不添加第二列。我哪里错了?我是不是想多了?
【问题讨论】:
-
请向我们展示示例数据以及您现在得到的结果以及您想要的输出
-
@eshirvana 刚刚编辑以提供示例数据,谢谢!
标签: postgresql casting case calculated-columns