postgresql - postgres 中空值的选择查询中的默认值

标签 postgresql null group-by

我有一张包含销售 ID、产品代码和金额的表格。有些地方产品代码是空的。我想显示 Missing 而不是 null。下面是我的表格。

salesId     prodTypeCode    amount
1           123              150
2           123              200
3           234             3000
4           234              400
5           234              500
6           123              200
7           111              40
8           111              500
9                           1000
10          123              100

我想显示每个 prodTypeCode 的总金额,如果 prodTypeCode 为 null,则应显示 Missing 选项。

select (CASE WHEN prodTypeCode IS NULL THEN
   'Missing'
    ELSE
    prodTypeCode
    END) as ProductCode, SUM(amount) From sales group by prodTypeCode

以上查询给出错误。请建议我克服这个问题。我创建了一个 SQLFIDDLE

最佳答案

问题是数据类型不匹配; 'Missing'是文本,但产品类型代码是数字。

将产品类型代码转换为文本,使两个值兼容:

select (CASE WHEN prodTypeCode IS NULL THEN
   'Missing'
    ELSE
    prodTypeCode::varchar(40)
    END) as ProductCode, SUM(amount) From sales group by prodTypeCode

参见 SQLFiddle .

或者,更简单:

select coalesce(prodTypeCode::varchar(40), 'Missing') ProductCode, SUM(amount)
from sales
group by prodTypeCode

参见 SQLFiddle .

关于postgresql - postgres 中空值的选择查询中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787892/

相关文章:

java 用户定义的数组(和用户定义的数组大小)返回 [null, null, null, ...]

C 代码,使用 NULL 与 0,最佳实践

python - 如何将不同的功能应用于 groupby 对象?

mysql - Eloquent 分组依据和计数

database - 如何对一对多关系进行唯一约束?

javascript - 如何将现有产品作为 Rails 中的嵌套属性添加到发票中?

entity-framework - 是否可以选择使 Entity Framework 将空字符串恢复为 null?

python - 聚合数据并获取总和和计数

postgresql - 仅针对 CASE WHEN 特定条件执行循环

Postgresql - 100% 确定使用 SSL 连接服务器?