2016-11-28 52 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中,除嵌套列定義外,您可以執行的操作不多。