sql - 选择常量作为伪列并对伪列进行算术运算

标签 sql database oracle relational-database

我想做这样的事情:

select 999 as price, 0.1 as tax_rate, 
price*tax_rate as tax_amount, tax_amount+price as total
from Dual;

在 Oracle 数据库上。

最佳答案

您可以使用CROSS APPLY(Oracle 12c):

select price, tax_rate, tax_amount, tax_amount+price as total
from Dual
CROSS APPLY (SELECT 999 AS price, 0.1 AS tax_rate FROM dual) s
CROSS APPLY (SELECT price*tax_rate AS tax_amount FROM dual) s2;

select price, tax_rate, tax_amount, tax_amount+price as total
from Dual
,LATERAL (SELECT 999 AS price, 0.1 AS tax_rate FROM dual) s
,LATERAL (SELECT price*tax_rate AS tax_amount FROM dual) s2;

<强> db<>fiddle demo

您无法引用同一级别的定义列(SELECT),但使用CROSS APPLY/LATERAL JOIN您可以创建一个链不使用子查询的计算列。

类似的方法:PostgreSQL using a calculated column in the same query

关于sql - 选择常量作为伪列并对伪列进行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53806156/

相关文章:

java - JDBC 4.0 - MS SQL 2005 - 如何从 Java 应用程序插入图像?

php - 如何在android中播放来自mysql数据库的视频

java - 插入数据库时​​如何查找意外 token 的原因?

java - 无法使用 IntelliJ 连接到 Oracle 数据库,无法识别区域设置

c# - C# 中的 PLSQL 过程参数

sql - golang sqlite 无法定义查询变量

sql - 如何快速展平 SQL 表

sql - 表格清理,查找时间范围内重复的帖子

mysql - SQL 查询重复结果

sql - 尝试使用循环将多个值存储到变量中,并使用该特定变量进行插入