Как сделать производный столбец в Oracle, а затем использовать его?

Как я могу создать/объявить/определить производный столбец в запросе выбора, а затем использовать его в предложении where?


person itsaboutcode    schedule 28.02.2011    source источник


Ответы (1)


Чтобы определить столбец в SQL-запросе, вы можете использовать практически любую операцию SQL, которая возвращает одно значение (включая операторы select). Вот некоторые примеры:

select 'Y' from dual;
select (5 * 3) cal_col from dual;
select (select min(col1) from table 2) calc_col from dual;
select nvl(col1, 'N') has_value from mytable;

По моему опыту, если вы хотите использовать производный столбец в запросе на выборку, вы должны определить столбец как часть внутреннего выбора. Вот пример:

select *
from (
 select (col1 * col2) calc_col
   from mytable
) data
where data.calc_col > 30

Другой альтернативой является использование вычисления внутри самого предложения where:

select (col1 * col2) calc_col
  from mytable t
 where (col1 * col2) > 30

Если вы выполняете операцию count(*), вы также можете использовать предложение HAVING:

select field1, count(*)
  from mytable
having count(*) > 3
person Kris Babic    schedule 28.02.2011
comment
Как быть, если мы получаем в нем более 1 значения? - person itsaboutcode; 01.03.2011
comment
@itsaboutcode Значение столбца в запросе может иметь только одно значение для любой заданной строки. Если имеется несколько значений и вы хотите, чтобы они все были возвращены, вам может потребоваться выполнить соединение с данными вычисляемого столбца. У вас есть примеры того, что вы думаете? - person Kris Babic; 01.03.2011