Oracle SQL - 如果X< 0然后0

时间:2014-06-17 16:38:41

标签: sql oracle

如果您获得的结果为0,则有时需要返回< 0。我想要一种简化,可读,无冗余的方法。需要替换的东西并大大简化了以下内容:

Select
    Case 
        When Amount_Required - Amount_In_Stock < 0 Then 0
        Else Amount_Required - Amount_In_Stock
        End as Amount_Needed

1 个答案:

答案 0 :(得分:2)

经过一段时间的比赛后,我认为这是一种有效的方法:

Select
    Greatest(0, Required - In_Stock) as Needed

似乎相当可读,特别是如果它成为标准做法。表达式Amount_Needed - Amount_In_Stock没有冗余。差不多就像我想的那样短暂。

此外,如果您希望拥有#cap,请替换以下内容:

Case
    When X+Y > 9999 Then 9999
    Else X+Y
    End as Z

你可以使用类似的方法。

Select 
    Least(9999, Attack - Defense) as Damage --Cap attack damage at 9999

这个例子对查询没有任何意义,但你明白了。