case语句中的最小检查次数在多个列范围内有效

时间:2013-01-11 20:54:11

标签: sql oracle case

给出下表definition

我的查询是这样写的:

select id,  
(  
   case   
      when partial >= 2 and full >=2  
      then sum(partial+full)  
      when partial >=2   
      then partial  
      when full >= 2  
      then full  
      else 0 
   end  
) counts
from Foo

为了确保内部的when子句,我必须做的最小检查次数是什么:

partial>=2full >=2未被调用两次。那就是当/然后语法将所有内容视为其他ifs而不仅仅是直接ifs时的情况呢?

1 个答案:

答案 0 :(得分:1)

你可以做到

select id,  
(  
   case when partial >= 2 then partial else 0 end + 
   case when full >= 2 then full else 0 end  
) counts
from Foo

示例SQL FIDDLE