在循环中连接table变量

时间:2017-06-19 07:51:13

标签: sql hana

我正在使用SAP HANA并希望在循环内加入过程调用的输出结果,无论如何都要这样做吗?

类似于此:但问题是重复的属性名称

FOR i IN 1..:nYEARS DO

CALL FUTUREREVENUES (:i,resulttemp);

result = SELECT * FROM :result t1
INNER JOIN :resulttemp t2
ON t1.ID = t2.ID

END FOR;

1 个答案:

答案 0 :(得分:0)

不,主要问题不是重复的属性名称; SAP HANA实际上允许在投影中,只要该属性是唯一可识别的。

在这里尝试做的不是任何静态类型的语言,例如SQL。基本上,返回类型result的结构取决于输入,即循环执行的频率。

这里需要的是动态SQL的一些方法,它可以在每次迭代时调整预计的列名。虽然这似乎是一种简单的方法,但事实恰恰相反。

result数据的每个消费者都被迫接受来自此循环的表格,甚至不知道如何命名投影列。

难以处理并使解决方案很难重复使用。

另一种方法可能是拥有一个固定的输出表结构,比如5年预测(如果你甚至可以预测任何确定的东西),并且没有动态列名。 相反,你可以例如将列命名为FC+Year1FC+Year2,...

这样,输出结构保持不变,而客户端应用程序必须做的就是根据基准年(输入到预测中)来匹配输出标签。