2016-11-28 6 views
0

以下のケースでSQLのベストプラクティスに関する質問があります。 私は、オンザフライでいくつかの列を計算する選択SQLクエリ(SQLスクリプト計算ビュー内)を持っています。 それは(私は、問題を示すために、単純化されたコードを提供)のようになります。HANA SQLの列間の複数の依存関係

SELECT ... , 
     "COL1" , 
     "COL2" * "COL3" AS "COL4" , 
     CASE WHEN "COL4" > "COL1" THEN sth 
      ELSE sth2 
     END AS "COL5" , 
     CASE WHEN "COL5" > sthelse THEN sthelse2 
      ELSE sthelse3 
     END AS "COL6" 
FROM ... 

上記のコードが原因でエラー「無効な列名」で動作しません。私は、他のケースの式でcaseステートメントによって生成された列を使用することは不可能であることを知っています。私はそのようないくつかの依存関係を持っているなど、深くネストされたクエリ持っている必要はありません:

SELECT ... 
FROM (SELECT * , 
        CASE WHEN "COL5" > sthelse THEN sthelse2 
         ELSE sthelse3 
        END AS "COL6" 
      FROM  (SELECT * , 
           CASE WHEN "COL4" > "COL1" THEN sth 
            ELSE sth2 
           END AS "COL5" 
         FROM  (... 

は、SAP HANAでのマルチレベルネストされたクエリせずにこれを解決する方法はありますか?私はアドバイスをいただければ幸いです。事前に感謝します

答えて

0

ここでは、SAP HANAのデシジョンテーブルを使用することができます。 また、投影ノード内のそれぞれの計算によるグラフィカルな計算ビューの作成を検討することもできます。 "純粋な" SQLでは、列定義を入れ子にすることを除いて、あまり余裕がありません。