oracle sql计数多列

1 sql oracle aggregate-functions

我想计算在sql中具有特定值的列数.例:

A B C D E
1 2 1 2 2
Run Code Online (Sandbox Code Playgroud)

我如何计算有3列的值为2.

Fra*_*itt 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
Run Code Online (Sandbox Code Playgroud)

替代用例:

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
Run Code Online (Sandbox Code Playgroud)