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