2014-01-30 22 views
0

我正在写一个查询聚集了一些数据,并在我的select语句我想写这样的:Postgres的NULLIF大于X

select coalesce(nullif(sum(field)), '> 1'), 1) from ...

其中,如果NULLIF是有能力的话,会给我field的总和,除非它大于1,在这种情况下,它会给我1.当然,我问NULLIF的不可能,它只是用来进行基本的字符串比较。

我不想使用CASE语句的原因是因为在那里我已经取代field是我会写出来两次,如果我是做一个巨大的表达式:

select case when sum(field) > 1 then 1 else sum(field) from ...

我希望postgres有一个ace的袖子,我不会那样做。任何人都会遇到这种困境吗?

回答

3

所以你想最低的总和和1?那LEAST功能:

select LEAST(sum(field), 1) from ... 
+1

哈!先生,你是个绅士和学者。 –