2016-05-25 1 views
2

La dernière fois que j'ai vérifié, il s'agit d'un code SQL totalement légitime que même Access peut gérer. Je ne sais pas pourquoi je reçois l'erreur suivante de SASSAS PROC Mise à jour SQL avec jointure interne

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; 

erreur est:

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. 

J'apprécie vraiment votre aide avec ça!

+0

duplicate de http://stackoverflow.com/questions/24629793/update-with-a-proc-sql –

Répondre

3

Je ne pense pas proc sql prend en charge la mise à jour avec la jointure interne. Vous pouvez le faire:

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

Le code peut être plus simple en utilisant une étape de données.

+0

Je reçois une erreur de syntaxe. SAS souligne la période entre fu_coding et CHANGED. Il dit qu'il attend un "=" – blacksaibot

+0

@blacksaibot. . . Cet alias de table n'est pas nécessaire ici. –

0

SAS ne prend pas en charge la mise à jour avec jointure interne dans la procédure SQL. Réécrivez (selon la suggestion de @ Gordon) ou utilisez pass through si possible!