Oracle10g 如何在Oracle中创建派生列并使用它?

Oracle10g 如何在Oracle中创建派生列并使用它?,oracle10g,derived,Oracle10g,Derived,如何在select查询中生成/声明/定义一个派生列,然后在where子句中使用它?要在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 my

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

要在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查询中使用派生列,则必须将该列定义为内部select的一部分。以下是一个例子:

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

要在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查询中使用派生列,则必须将该列定义为内部select的一部分。以下是一个例子:

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

如果我们在其中获取的值超过1个,该怎么办?@itsaboutcode查询中某列的值对于任何给定行只能有一个值。如果有多个值,并且希望返回所有值,则可能需要使用计算的列数据执行联接。您是否有任何示例可以说明您的想法?如果我们在其中获取了1个以上的值,该怎么办?@itsaoutcode查询中一列的值对于任何给定行只能有一个值。如果有多个值,并且希望返回所有值,则可能需要使用计算的列数据执行联接。你有没有任何你所想的例子?