Вы можете сделать это с помощью грубого силового метода:
select t.*,
((case when a > 0 then 1 else 0 end) +
(case when b > 0 then 1 else 0 end) +
(case when c > 0 then 1 else 0 end) +
(case when d > 0 then 1 else 0 end) +
(case when e > 0 then 1 else 0 end)
) as NewColumn
from currenttable t;
Если вам действительно нужен новый столбец в таблице, тогда вы должны сделать:
- изменить таблицу, чтобы добавить новый столбец
- запустить оператор обновления, аналогичную приведенной выше
select
- рассмотрим триггер, чтобы сохранить значение уточненный
EDIT:
Комментарий Алексея стоит упомянуть. В более поздних версиях Oracle вы можете добавить виртуальный столбец, который будет выполнять этот расчет как часть самого определения таблицы. Виртуальные столбцы, безусловно, лучший способ решить эту проблему, чем добавление нового не виртуального столбца в таблицу.
Я только что отредактировал ваше название темы, чтобы сделать его более явным. Просто говорить больше, чем «0», не очень помогает. Я думаю, что это должно быть «больше нуля нуля». –