上次我检查过,这是完全合法的SQL代码,甚至Access都可以处理。不知道为什么我从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.
我真的很感谢你对此的帮助!
答案 0 :(得分:3)
我认为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
) ;
使用数据步骤可能更简单。
答案 1 :(得分:0)
SAS不支持在SQL过程中使用内部联接进行更新。要么重写(根据@ Gordon的建议),要么尽可能使用pass through!