1
如何在select查询中声明/定义派生列,然后在where子句中使用它?如何在Oracle中创建派生列,然后使用它?
如何在select查询中声明/定义派生列,然后在where子句中使用它?如何在Oracle中创建派生列,然后使用它?
要定义SQL查询中的列,几乎可以使用任何返回单个值(包括select语句)的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
如果要执行的计数(*)的操作,则还可以利用HAVING子句:
select field1, count(*)
from mytable
having count(*) > 3
如果我们获得超过1个值,那么这是什么方法? – itsaboutcode 2011-02-28 22:51:22
@itsaboutcode查询中列的值对于任何给定行只能有一个值。如果有多个值,并且希望返回所有这些值,则可能需要使用计算的列数据执行连接。你有什么样的例子说明你在想什么? – 2011-02-28 22:57:07