2017-02-12 2 views
0

Ich habe eine Tabelle a, die Spalten a1 und a2 enthält."IF" Bedingung in linken beitreten "SAS" proc sql

Ich habe eine Tabelle b, die Spalten b1 und b2 enthält.

Ich möchte left joinb-a auf condition1 wenn a2 is null und auf condition2 wenn a2 is not null.

Wie kann ich diese Abfrage konstruieren?

+0

Beispieldaten und gewünschte Ergebnisse würden helfen zu verdeutlichen, was Sie tun möchten. –

Antwort

1

Wenn ich das richtig verstanden:

proc sql; 
    select . . . 
    from a left join 
     b 
     on (a2 is null and condition1) or 
      (a2 is not null and condition2); 

Dies ist eine direkte Übersetzung Ihrer Anforderungen ist. Im Allgemeinen hat das Folgende oft eine bessere Leistung, da dies die Indizes besser nutzen kann (abhängig von der Art der Bedingungen):

proc sql; 
    select a.*, coalesce(b1.b2, b2.b2) as b2 
    from a left join 
     b b1 
     on (a2 is null and condition1) left join 
     b b2 
     on (a2 is not null and condition2);