2016-05-25 4 views
2

В прошлый раз, когда я проверил, это полностью законный SQL-код, который может обрабатывать даже Access. Не знаю, почему я получаю следующее сообщение об ошибке от SASОбновление SAS PROC SQL с внутренним соединением

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

дубликат http://stackoverflow.com/questions/24629793/update-with-a-proc-sql –

ответ

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 
       ) ; 

Код может быть проще с использованием шага данных.

+0

Я получаю синтаксическую ошибку. SAS подчеркивает период между fu_coding и CHANGED. Он говорит, что ожидает «=» – blacksaibot

+0

@blacksaibot. , , Этот псевдоним таблицы там не нужен. –

0

SAS не поддерживает обновление с внутренним соединением в процедуре SQL. Либо перепишите (согласно предложению @ Гордона), либо используйте pass through, если это возможно!

Смежные вопросы