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

发布于 2024-10-19 22:22:09 字数 50 浏览 1 评论 0原文

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

How I can make/declare/define a derived column in select query and then use it in where clause?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒中人 2024-10-26 22:22:09

要在 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

To define a column in an SQL query, you can use pretty much any SQL operation that returns a single value (including select statements). Here are some examples:

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;

From my experience, if you want to use a derived column in a select query, then you must define the column as part of an inner select. Here is an example:

select *
from (
 select (col1 * col2) calc_col
   from mytable
) data
where data.calc_col > 30

Another alternative is use the calculation within the where clause itself:

select (col1 * col2) calc_col
  from mytable t
 where (col1 * col2) > 30

If you are performing a count(*) operation, then you can also leverage the HAVING clause:

select field1, count(*)
  from mytable
having count(*) > 3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文