lassen Sie uns sagen, ich habe diese drei Tabellen:SAS: LEFT JOIN Werke für definierte Zahlen aber nicht für eine ausgewählte Liste von Zahlen
data Con1;
input ID Age;
cards;
11 22
23 32
32 3
14 73
;
run;
data Con2;
input ID Age;
cards;
11 22
23 32
32 3
14 73
15 11
7 15
;
run;
data Con3;
input ID Height;
cards;
11 150
23 180
32 181
14 175
15 149
7 159
;
run;
Jetzt möchte ich nach links machen Verbindung zwischen Con2
und Con3
sondern nur für die Zeilen, die nicht in Con1
sind.
Das funktioniert gut, aber ich mag diese Tatsache nicht, dass ich zwei Schritte benötigt habe.
Also mein Ziel ist es nur ein Schritt zu bekommen, die irgendwie sollte wie folgt aussehen:
proc sql;
create table want_fails as
select
a.*,
b.Height
from Con2 (where=(ID not in (select ID from Con1))) as a
left join Con3 as b
on a.ID=b.ID;
run;
Und ich verstehe einfach nicht, wie dies in einem Fehler behoben wird, wenn auf der anderen Seite des folgenden Aussage arbeitet gerade fein:
proc sql;
create table want_works as
select
a.*,
b.Height
from Con2 (where=(ID not in (11 23 32 14))) as a
left join Con3 as b
on a.ID=b.ID;
run;
Hier ist der Fehler:
eRROR 22-322: Syntaxfehler, einer der erwartete folgende: eine Zeichenfolge in Anführungszeichen, ein numer ic Konstante, eine Datetime Konstante, ein fehlender Wert, -.
Fehler 76-322: Syntaxfehler, Anweisung wird ignoriert. FEHLER: Syntaxfehler beim Analysieren der WHERE-Klausel. FEHLER: Ungültiger Wert für die WHERE-Option. FEHLER: Einige Optionen für die Datei WORK.CON2 wurden aufgrund von oben genannten Fehlern oder Warnungen nicht verarbeitet.
Also können Sie mir bitte sagen, was ich übersehe?
Ich habe nur eine andere Workaround mit einem aber ich bevorzuge die Lösung von @ user2877959.
proc sql;
create view test as
select *
from Con2 where ID not in (select ID from Con1);
create table want_works2 as
select
a.*,b.Height from test as a
left join Con3 as b
on a.ID=b.ID;
Können Sie bitte eine Beispielausgabe liefern –
Können Sie bitte die Fehlermeldung, die Sie erhalten, posten? – yaswanth