2014-10-17 61 views
1

我試圖在HANA中編寫一個過程的腳本,並且我有要求比較兩個表的周ID。如果Week ID1 > Week ID2,我必須將新記錄插入到具有ID2的表中。我嘗試了下面的邏輯,但沒有奏效。如何在IF語句中使用SQL聚合的結果

這裏,IF內部的邏輯不執行,雖然

VAR1 VARCHAR(2); 
VAR2 VARCHAR(2); 
BEGIN 
    SELECT MAX(FISCAL_WK) AS VAR1 FROM "XXX"."OUTLOOK_FACTS"; 
    SELECT MAX(FISCAL_WK) AS VAR2 FROM "XXX"."OUTLOOK"; 
    IF :VAR2 > :VAR1 THEN 
     SELECT MAX(OUTLOOKID) AS TEST FROM "XXX"."OUTLOOK_FACTS"; 
    END IF; 
END; 

我是很新的這一點,所以請大家幫忙。

+1

如果你使用Hana,你爲什麼用SQL Server標記這個? (這是一個微軟產品) – 2014-10-17 06:35:30

+0

不知道你是否可以用var> var>。嘗試投射/將值更改爲int – stb 2014-10-27 11:02:31

回答

0

在您的代碼示例中,您實際上並未將值分配給:VAR1或:VAR2,因此這兩個變量都保持爲空。

嘗試

SELECT MAX(FISCAL_WK) AS VAR1 into :VAR1 FROM "XXX"."OUTLOOK_FACTS"; 
SELECT MAX(FISCAL_WK) AS VAR2 into :VAR2 FROM "XXX"."OUTLOOK"; 
IF :VAR2 > :VAR1 THEN 
    SELECT MAX(OUTLOOKID) AS TEST FROM "XXX"."OUTLOOK_FACTS"; 
END IF; 

你可以,但是也可以只包在一個SQL語句的一切。但這是你選擇:)

0

對於那個插入你不需要任何程序代碼。 你能做到這一點在直SQL:

select case 
     when max_fisc > max_fisc_fact then 
      max_id_fact 
     else 
      -1 
     end as VALUE_TO_BE_INSERTED 
from (  
     select max(o.fiscal_wk) as max_fisc, max(o.outlookid) as max_id 
      , max(f.fiscal_wk) as max_fisc_fact, max(f.outlookid) as max_id_fact 
     from outlook o 
      cross join outlook_facts f); 

就收拾這個SQL到您的INSERT語句,就大功告成了。 - Lars