如何在IF语句中使用SQL聚合的结果

时间:2014-10-17 06:10:58

标签: sap hana

我正在尝试在HANA中编写程序脚本,并且我需要比较2个表的周ID。如果是Week ID1 > Week ID2,我必须将新记录插入到具有ID2的表中。我尝试了以下逻辑,但这没有用。

这里,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;

我对此很陌生,所以请帮忙。

2 个答案:

答案 0 :(得分: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语句中。但那是你的选择:)

答案 1 :(得分: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语句中即可完成。 - 拉尔斯

相关问题