2013-05-13 87 views
1

我需要构造满足下列条件的查询分组值:由X列 选择基于条件

  • 如果column1包含负值

    • 选择X列和MAX(列1),基团(可只在给定的组中的一个),则代替MAX(列1)显示“复位”

    我知道可以通过分组并用非常大量的代负值,然后经过使用情况之前,使用的情况下做到这一点分组,但这是一个非常混乱的解决方案。

    有没有人有更好的主意如何解决这个问题?

  • 回答

    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 
    
    +0

    可以逃脱不在线查看,甚至。 – 2013-05-13 14:00:29

    +0

    哇,看来我的大脑不能在今天最好的...感谢您的帮助。 – kyooryu 2013-05-13 14:00:54

    +0

    @DavidAldridge:对。我更新了我的答案。 – 2013-05-13 14:01:51