PostgreSQL中带FILTER的SUM查询返回null如何替换为0
解决方案
错误原因
FILTER 子句仅支持附加在聚合函数后使用,你之前的写法将非聚合函数 COALESCE 放在 FILTER 前修饰,不符合语法规则,因此触发报错。
修正后写法
将完整的带FILTER修饰的SUM聚合表达式整体放入COALESCE中即可,聚合运算返回NULL时会自动被替换为0:
SELECT COALESCE( SUM(PRICE) FILTER (WHERE date(order_date) >= (cast(current_date as date) - interval '1' day)), 0 ) as day1
如果你的过滤条件有多个,只需要把对应的过滤逻辑放到SUM后的FILTER括号内即可,外层统一用COALESCE做NULL值替换。
内容的提问来源于stack exchange,提问作者merchmallow
相关产品推荐
相关产品推荐

