sql - 如何使用子查询结果作为另一个查询的列名

标签 sql oracle

我想使用子查询的结果作为另一个查询的列名,因为数据一直在改变列,子查询将决定当前预测数据存储在哪一列。我的例子:

select item,
      item_type
      ...
      forcast_0 * 0.9 as finalforcast
      forcast_0 * 0.8 as newforcast
from sales_data.

forcast_0列是子查询的结果(fore_column_name),结果可能会变为forcast_1或forcast2

select 
     fore_column_name 
     from forecast_history 
     where ...

此外,预测列将在第一个查询中多次使用。我怎样才能实现这个?

最佳答案

将子查询用作内联表。类似....

select item,
       item_type,
       ..
       decode(fore_column_name, 'foo', 1, 2) * 0.9 as finalforcast,
       decode(fore_column_name, 'foo', 1, 2) * 0.8 as newforcast
  from sales_data,
       (
          select fore_column_name
            from forecast_history 
           where ...
       ) inlineTable

我在这里假设子查询的值对于每行都是相同的 - 因此快速交叉连接就足够了。如果该值将根据 sales_data 表中每行的值而变化,则其他类型的联接会更合适。

快速链接到decode - 如果您不熟悉它。

关于sql - 如何使用子查询结果作为另一个查询的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007909/

相关文章:

mysql - 如何使用 GROUP_CONCAT 在 GROUP BY 之后加入?

sql - PL/SQL TEXT_IO 包

sql - Oracle SQL : Understanding the behavior of SYS_GUID() when present in an inline view?

sql - 为什么表上的 CONNECT BY LEVEL 返回额外的行?

MySQL垂直连接多个表

sql - 动态选择要在 SELECT 语句中使用的列

java.sql.SQLException : ORA-01017: invalid username/password; logon denied 异常

java - 从 servlet 访问 Oracle 8i 表时出现奇怪的行为

sql - sqlite 中出现 "TYPE_FORWARD_ONLY"错误

.net - Oracle 存储过程与 .Net 的 ORM 样式映射