[英]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.