我需要构建一个符合以下条件的查询:
我知道我可以通过在分组之前使用case并用非常大的数字替换负值然后在分组后使用case来实现它,但这是一个非常混乱的解决方案。
有人知道如何解决这个问题吗?
答案 0 :(得分:3)
您还可以选择最小值并检查是否存在否定性 如下所示:
select foo, case when min_value < 0 then 'reset' else to_char(max_value) end
from
(
select foo, max(column1) as max_value, min(column1) as min_value
from your_table
group by foo
)
或者,没有子查询:
select foo, case when min(column1) < 0 then 'reset' else to_char(max(column1)) end
from your_table
group by foo