sql - 如何在 WHERE 子句中使用临时列名?

标签 sql oracle select ora-00904

首先,我必须说我在来到这里之前已经研究过我的问题并且看到了类似的 question here及其所有答案,但不幸的是,它对我没有帮助。

Oracle SQL。

我有:

SELECT 
    first_name, 
    salary_dollars, 
    0.85 * salary_dollars AS salary_euro
FROM 
    employees 
WHERE 
    0.85 * salary_dollars > 4000;

salary_euro 是我的临时专栏。我想避免在 WHERE 子句中进行双重计算,但是如果我在请求中写入 WHERE salary_euro > 4000 那么我会收到此错误:

ORA-00904: "SALARY_EURO": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 6 Column: 7

最佳答案

绕过此限制的一种方法是使用子查询来创建临时列:

SELECT * 
FROM   (SELECT first_name, 
               salary_dollars, 
               0.85 * salary_dollars AS salary_euro
       FROM    employees) e
WHERE  salary_euro > 4000;

关于sql - 如何在 WHERE 子句中使用临时列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66930005/

相关文章:

php - Zend_Db_选择 : Working with JOIN's

sql - 存储过程在 7 年后随机停止工作

mysql - 更改在mysql中具有外键约束的表主键

database - 如何判断电脑上是否安装了oracle数据库

python - 连接 CSV 或表格

mysql显示每一行中来自其他表的行数

mysql - 是否可以依次插入然后选择插入的行?

sql - Dapper 多插入返回插入的对象

sql - 数据库设计 : Store data from paper forms in database

sql - 如何使用 sql 选择条件更新列? (甲骨文)