繁体   English   中英

带有内部联接的SAS PROC SQL更新

[英]SAS PROC SQL update with inner join

上次检查时,这甚至是Access都可以处理的完全合法的SQL代码。 不知道为什么我会从SAS中收到以下错误

UPDATE fu_coding 
INNER JOIN old_form16 
    ON fu_coding.CSPCCID = old_form16.CSPCCID 
SET fu_coding.CHANGED = 1
WHERE fu_coding.NEW_DIAG <> old_form16.NEW_DIAG;

错误是:

18311      INNER JOIN old_form16
           -----
       22
       76
ERROR 22-322: Syntax error, expecting one of the following: a name, (, '.', AS, SET.
ERROR 76-322: Syntax error, statement will be ignored.

非常感谢您的帮助!

我不认为proc sql支持使用内部proc sql更新。 你可以这样做:

UPDATE fu_coding 
    SET CHANGED = (SELECT 1
                   FROM old_form16
                   WHERE fu_coding.CSPCCID = old_form16.CSPCCID AND
                         fu_coding.NEW_DIAG <> old_form16.NEW_DIAG
                  )
    WHERE EXISTS (SELECT 1
                   FROM old_form16
                   WHERE fu_coding.CSPCCID = old_form16.CSPCCID AND
                         fu_coding.NEW_DIAG <> old_form16.NEW_DIAG
                  ) ;

使用数据步骤可以使代码更简单。

SAS不支持在SQL过程中使用内部联接进行更新。 要么重写(按照@Gordon的建议),要么尽可能使用pass through

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM