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

时间:2015-06-23 16:04:31

标签: 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 ...

此外,forcast列将在第一个查询中多次使用。我怎么能实现这个呢?

1 个答案:

答案 0 :(得分:2)

将您的子查询用作内联表。像......那样......

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的快速链接 - 如果您不熟悉它。

相关问题