2017-06-19 6 views
0

私は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; 

答えて

0

いや、主な問題は、重複する属性名ではありません。 SAP HANAは、属性を一意的に識別できる限り、実際に投影することができます。

ここでやろうとしているのは、静的型付けされた言語では、SQLのようにはお勧めできません。基本的には、戻り値の型の構造は、入力、つまりループの実行頻度によって異なります。

ここで必要となるのは、反復ごとに投影される列名を調整する動的SQLの方法です。これは簡単なアプローチであるように見えますが、実際は逆です。

データのすべてのコンシューマは、投影された列の名前がどのように指定されるかを知らなくても、このループからテーブルが出てくるものを受け入れる必要があります。

これは処理が難しく、ソリューションをほとんど再利用できないようにします。

別のアプローチでは、固定出力テーブル構造、例えば5年予測(何かを確実に予測できる場合でも)、動的列名を持たないことがあります。 代わりに、列の名前をFC+Year1,FC+Year2 ...

このように、出力構造は同じであり、すべてのクライアントアプリケーションが行う必要があります、ベースライン年に従って出力ラベルを一致させることです(予測への入力) 。

関連する問題