2011-05-27 63 views

回答

6

您可以使用解碼此:

Select decode(a, 2, 1, 0) 
    + decode(b, 2, 1, 0) 
    + decode(c, 2, 1, 0) 
    + decode(d, 2, 1, 0) 
    + decode(e, 2, 1, 0) 
from my_tab 

替代使用情況:

Select (case a when 2 then 1 else 0 end) 
    + (case b when 2 then 1 else 0 end) 
    + (case c when 2 then 1 else 0 end) 
    + (case d when 2 then 1 else 0 end) 
    + (case e when 2 then 1 else 0 end) 
from my_tab 
1

爲了讓Frank Schmitt更進一步,您可以將「要計數的數值」放在一個內聯表中以避免重複:

Select 
    decode(a, countthis.countvalue, 1, 0) 
    + decode(b, countthis.countvalue, 1, 0) 
    + decode(c, countthis.countvalue, 1, 0) 
    + decode(d, countthis.countvalue, 1, 0) 
    + decode(e, countthis.countvalue, 1, 0) 
from 
    my_tab 
,(select 2 as countvalue from dual) countthis