1

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

4

1 回答 1

1

要在 SQL 查询中定义列,您几乎可以使用任何返回单个值的 SQL 操作(包括选择语句)。这里有些例子:

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
于 2011-02-28T22:39:11.127 回答