Oracle SQL подсчитывает несколько столбцов

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

A B C D E
1 2 1 2 2

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


person argghhh    schedule 27.05.2011    source источник


Ответы (2)


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

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
person Frank Schmitt    schedule 27.05.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
person JosephStyons    schedule 27.05.2011