J'ai peu de problème. J'ai une grande table et quelques petites tables où de petites tables incluant une partie des champs de la grande table. Comment puis que je puisse insérer des tables (ou union) sur la base de si le champ est les mêmes données, si la petite table n'a pas de champ de Big - Set Null / 0 dans Big Table.
Exemple: P>
data temp1; infile DATALINES dsd missover; input a b c d e f g; CARDS; 1, 2, 3, 4,5,6 2, 3, , 5 3, 3 4,,3,2,3, ; run; data temp2; infile DATALINES dsd missover; input a c e g; CARDS; 5, 2, 3, 4 6, 3, , 5 7, 3 ; run;
3 Réponses :
Il n'est pas très clair pour moi quelle opération vous avez l'intention de faire, mais certaines pensées initiales sont: p>
Fusionner la clause code> dans un DataStep ou plus élégamment Utiliser proc SQL code>. li>
- Cependant, en utilisant soit une autre approche, vous devrez spécifier quelles lignes dans
temp1 code> et TEMP2 code> doivent être comparées - vous vous joignez généralement sur une colonne disponible dans les deux les tables. li>
ol>
Pour nous aider à résoudre votre problème, pourriez-vous éventuellement fournir la sortie correcte pour votre opération souhaitée, si vous exécutez-le sur TEMP1 code> et temp2 code>? Cela montrerait quelles options que vous avez explorées et ce qui doit être réparé là-bas. P>
Ah, j'ai trouvé une solution. Il suffisait d'utiliser TEMP3; SET TEMP1 TEMP2; courir; code>
Vous devriez essayer procendez-vous. Ce sera plus efficace car vous ne louerez plus votre petite table et à nouveau différent dans / * ceci est à peu près identique au code ci-dessus mais pas lire votre grosse table
et sera efficace * / p> plus sur procendant dans la documentation http://support.sas.com/documentation/cdl/fr/proc/65145/html/default/viewer.htm#n19kwc3onglzH2N1L2K4E39EDV3X .htm p> p>
C'est exactement ce que SAS fait par défaut.
proc contents data=have1 out=cont1 noprint; run; proc contents data=have2 out=cont2 noprint; run; proc sql noprint; select a.name into :varlist separated by ',' from cont2 a inner join cont1 b on upcase(a.name) = upcase(b.name) ; ... insert into have1 (&varlist) select &varlist from have2 ;
Grand merci d'explication, j'aime acquérir de nouvelles connaissances :)