оракул sql считать несколько столбцов - PullRequest
1 голос
/ 27 мая 2011

Я хочу посчитать количество столбцов, которые имеют определенное значение в sql. Пример:

A B C D E
1 2 1 2 2

Как подсчитать, что 3 столбца имеют значение 2.

Ответы [ 2 ]

6 голосов
/ 27 мая 2011

Вы можете использовать декодирование для этого:

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 голос
/ 28 мая 2011

Просто чтобы сделать еще один шаг Фрэнка Шмитта, вы можете убрать «значение, которое вы хотите посчитать» во встроенную таблицу, чтобы избежать его повторения:

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
...