Пример данных поможет;Я не уверен, что вы имели в виду, говоря, что вы хотите «вычислить средние два столбца» - это (COLUMN_1 + COLUMN_2) / 2
или AVG(COLUMN_1)
и AVG(COLUMN_2)
?
В любом случае, принцип тот же - проверьте, содержит ли столбец число, и выполните расчет.В противном случае ничего не делать.Например:
SQL> with test (col1, col2) as
2 (select 'a2' , 'ccc' from dual union all
3 select '100', '200' from dual union all
4 select '15' , 'xx' from dual
5 )
6 select col1,
7 col2,
8 case when regexp_like(col1, '^\d+$') and regexp_like(col2, '^\d+$') then
9 (to_number(col1) + to_number(col2)) / 2
10 else null
11 end average
12 from test;
COL COL AVERAGE
--- --- ----------
a2 ccc
100 200 150
15 xx
SQL>