我想将子查询的结果用作另一个查询的列名,因为数据一直在更改列,子查询将决定当前预测数据存储在哪一列。我的例子:
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列将在第一个查询中多次使用。我怎么能实现这个呢?
答案 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的快速链接 - 如果您不熟悉它。