如何在select查询中创建/声明/定义派生列,然后在where子句中使用它?
答案 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