Oracle SQL计算列如何在同一查询中的另一个计算中引用计算列?

2024-09-23 22:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在同一查询中的另一个计算中使用计算列。但据我所知,oraclesql似乎不允许我这样做。这些看起来像是一个简单的数据操作,我可以在Python中轻松完成,但是oraclesql似乎很有挑战性。在

例如:

表格

日期|价值1 |价值2

所需的查询功能

SELECT
date,
value1,
value2,
(value2 * value1) AS value_calculated
(value_calculated * 100) AS value_calculated_2
(value_calculated_2 * 1000) AS value_calculated_3

FROM  table

如果这是不可能的,我认为甲骨文应该在他们的软件中加入这个功能。在

在其他堆栈溢出问题/响应中,出现了交叉应用。这对我不起作用,因为我需要创建10-20个计算列(所有这些列都引用其他计算列)。在

我是否可以创建一个简单的PL/SQL函数来将它们指定为在其他列计算中使用的对象?在

更新问题:

这是我使用甲骨文云财务19C所做的全部代码

^{pr2}$

这将返回查询中的错误

我在计算中得到重复值_柱端余额列。在

我应该使用WHERE语句加入吗?在

同样,我认为需要有一个更简单的解决方案来进行派生列计算。Python Pandas可以在2秒内完成此操作。在


Tags: 数据from功能datevalueastableselect
2条回答

In other Stack Overflow questions/responses, CROSS APPLY has come up. This is not working for me, since I have 10-20 calculated columns I need to create (all of which reference the other calculated columns).

CROSS APPLY可以链接:

SELECT t.*, s1.val1, s2.val2, s3.val3
FROM tab t
CROSS APPLY (SELECT t.val1 * t.val2 AS val3 FROM dual) s1
CROSS APPLY (SELECT s1.val3 * 100   AS val4 FROM dual) s2
CROSS APPLY (SELECT s2.val4 * 1000  AS val5 FROM dual) s3
 ...

您只需要确保引用对象的顺序正确。在

相关:

How to use a calculated column to calculate another column in the same view

这是标准的SQL功能,定义它是有充分理由的:数据库不需要以任何顺序计算select表达式。所以,没有“之前”的别名。在

SUB CTE是正常的查询:

SELECT t.*,
       (value_calculated_2 * 1000) AS value_calculated_3
FROM (SELECT t.*,
             (value_calculated * 100) AS value_calculated_2 
      FROM (SELECT date, value1, value2,
                   (value2 * value1) AS value_calculated
            FROM . . . 
           ) t
     ) t

相关问题 更多 >