Bonjour,

Voici l'exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
DATA T1 ;
    input X age AB $ Y ;
    cards ;
    1 41 Idem 1942
    2 56 Idem 7
    3 23 Idem 111
    4 57 Idem 9
    ;
run ;
DATA T2 ;
    input X age Z $;
    cards ;
    1 63 A 
    1 69 B
    2 56 C
    3 18 D
    4 45 E
    4 47 F
    ;
run ;
option MSGLEVEL=I;
data AB AA BB;
merge T2(in=a) T1(in=b); by X ;
if A and B then output AB;
else if A and not B then output AA;
else if not A and B then output BB;
else put 'problème';run;
proc print data=AB;run;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
                             Obs    X    age    Z     AB        Y
 
                              1     1     41    A    Idem    1942
                              2     1     69    B    Idem    1942
                              3     2     56    C    Idem       7
                              4     3     23    D    Idem     111
                              5     4     57    E    Idem       9
                              6     4     47    F    Idem       9
INFO: La variable age de la table WORK.T2 sera remplacée par la table WORK.T1
Pourquoi pour la 2 ème observation par exemple, il n'écrase pas l'age de T2 par l'age de T1

Par contre si je fais le merge dans l'autre sens, cela marche.

Bizarre.