postgresql - 在 Postgres 中不能匹配布尔和双精度的案例类型
问题描述
查询:如果 b 是信用(即 0 或大于 0),那么值应该是 a。否则 (a+b),负值应为零。
我的查询条件是
Case when(b>=0) Then (a) Else (SUM(a+b)>0 End as Difference
但我收到了这个错误
Error : CASE Types boolean and double precision cannot be matched
如果有人协助查询解决方案,将非常高兴。我使用 Postgres 作为数据库。
解决方案
您的表达式中有语法错误;左括号和右括号的数量不匹配。
Buta
是一个数字,whilea + b > 0
是一个布尔值(“true”或“false”),所以 PostgreSQL 抱怨它无法确定你的 case 表达式应该是什么类型。
根据您的描述,我会使用
CASE WHEN b >= 0
THEN a
ELSE greatest(a + b, 0)
END
推荐阅读
- c++11 - 创建相互依赖于其“容器”类的对象的可接受做法?
- javascript - 如何在表单提交时防止表单在刷新时重新提交
- reactjs - Reactjs 组件状态下的单元测试 Jest
- .net - kendo 下拉列表值未正确传递到服务器端代码
- c# - 如何从数据库中获取 YouTube URL 并在视图中显示视频
- elasticsearch - 将 ElasticSearch 相关性分数配置为优先匹配所有单词而不是匹配某些单词?
- conv-neural-network - CNN推理卷积的快速实现
- android - BaseAdapter 扩展的 Fragment 和 Adapter 中的列表视图搜索遇到崩溃
- java - 运行多条记录时用于地理编码的 Mapbox API 导致内存不足异常
- vue.js - Vue.js vuetifyjs日历不显示日事件