mise à jour avec une proc sql
Il devrait être facile mais je suis coincé
Proc sql;
UPDATE dicofr
SET dicofr.period = correspondance.period
FROM dicofr
INNER JOIN correspondance
ON dicofr.name_fic = correspondance.name_fic;
Je pensais à ma mise à jour serait fait, mais j'ai eu cette erreur à la place.
271 proc sql;
272 update dicofr
273 set dicofr.period = correspondance.period
-
73
76
ERROR 73-322: Expecting an =.
ERROR 76-322: Syntax error, statement will be ignored.
J'ai essayé avec un droit de jointure avec une select
proc sql;
SELECT * FROM dicofr INNER JOIN correspondance
ON dicofr.nom_fic=correspondance.nom_fic;
Le select est fine.
Comment venir?
Est ma requête SQL incorrecte? Je ne le pense pas ...
Édité: Il semble que la mise à jour, je veux faire n'est pas possible. Est-il un moyen de faire ce que je veux avec SAS langue?
OriginalL'auteur Andy K | 2014-07-08
Vous devez vous connecter pour publier un commentaire.
SAS ne prend pas en charge les Jointures dans une instruction de mise à JOUR, pour une raison quelconque. Vous devez le faire par le biais d'un select imbriquées.
proc sql; update dicofr as h1 set period=(select period from correspondance as h2 where h1.name_fic=h2.name_fic) where name_fic in (select name_fic from correspondance); quit;
Btw Joe. Même si ma question de départ était avec SQL, est-il un moyen de le faire sur le SAS langue maternelle? Si oui, pouvez-vous me donner un indice sur comment? Voulez-vous me créer une autre question?
Vous pouvez utiliser
UPDATE
comme un SAS déclaration, aussi, bien que ce ne soit pas de mise à jour de la table en place; ouMODIFY
qui n' (à l'aide d'un format, peut-être).Ma compréhension, et @Joe peut me corriger si je me trompe, c'est que
UPDATE
ouMODIFY
sont généralement plus lents que d'utiliser un droitPROC SQL
appel. En outre, la raison pour laquelle je pense que la SAS ne prend pas en charge laUPDATE ... JOIN
syntaxe est parce que l'Oracle ne prend pas en charge ce soit, et ils ont à répondre au plus petit dénominateur commun.Il n'y a rien de spécial à propos de
PROC SQL
qui le rend généralement plus rapide; il tend à varier en fonction de ce que vous faites. Je ne sais pas pourquoi Oracle aurait rien à voir avec ce qui est pris en charge dansPROC SQL
; la syntaxe dePROC SQL
est entièrement à l'intérieur du SAS. Si vous utilisezPROC SQL
pour modifier un SGBD externe, il vous permet de convertir le code de SGBD code spécifique, mais il ya beaucoup de choses SAS permet qui ne sont pas permis par ailleurs (GROUP BY
de refusionner, par exemple).OriginalL'auteur Joe
Yer vous prenez une mauvaise approche. Essayez quelque chose comme ceci:-
OriginalL'auteur Ankit Bajpai