我使用find_by_sql
在rails中执行了以下查询select LEAST(a,b) as min_value ,
CASE LEAST(a,b)
WHEN LEAST(a,b) < 1.0
then 1.0
ELSE 1-LEAST(a,b)
END
from model where type=abc
但我得到的错误是PG :: Error:ERROR:运算符不存在:double precision = boolean
我不知道我做错了什么。我刚从http://www.postgresql.org/docs/8.4/static/functions-conditional.html
使用了这种语法答案 0 :(得分:1)
我认为问题在于你的情况:
CASE LEAST(a,b)
WHEN LEAST(a,b) < 1.0 then 1.0
ELSE 1-LEAST(a,b)
END
CASE的这种形式将尝试将least(a, b)
(可能是双精度值)与每个WHEN表达式进行比较,以查看哪一个匹配。你只有一个WHEN:
WHEN LEAST(a, b) < 1.0
这是一个布尔值,所以你试图将双精度值(least(a, b)
)与布尔值(least(a, b) < 1.0
)进行比较,而PostgreSQL则说没有。
您可能想要其他形式的CASE:
case
when least(a, b) < 1.0 then 1.0
else 1 - least(a, b)
end