Я хочу подсчитать количество столбцов, которые имеют определенное значение в sql. Пример:
A B C D E
1 2 1 2 2
Как я могу посчитать, что есть 3 столбца со значением 2.
Я хочу подсчитать количество столбцов, которые имеют определенное значение в sql. Пример:
A B C D E
1 2 1 2 2
Как я могу посчитать, что есть 3 столбца со значением 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
Просто чтобы сделать еще один шаг Фрэнка Шмитта, вы можете убрать «значение, которое хотите посчитать», во встроенную таблицу, чтобы избежать его повторения:
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