如何在Oracle中创建派生列然后使用它?

时间:2011-02-28 22:30:43

标签: oracle10g derived

如何在select查询中创建/声明/定义派生列,然后在where子句中使用它?

1 个答案:

答案 0 :(得分: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