私は基本的にデータセットを2つに分けています(IDと欠落IDを持つもの)。 IDの記入に役立つマッチキーのセット。私は以下の合計レコードを5つ持っており、最終データセットは5つのレコードをすべて保持する必要があります。以下の例である:非欠落データCPOOL
でSAS:マージするか結合して不足している間にすべてのレコードを保持する
. M123
. M456
:
DATA TEST;
LENGTH ID MKEY $12.;
INPUT ID $ MKEY $;
DATALINES;
. M123
. M456
A M123
B M456
C M789
;
RUN;
DATA MPOOL CPOOL; SET TEST;
IF ID IN ("","0") THEN DO;
MISS_ID = 1;
OUTPUT MPOOL;
END;
ELSE DO;
MISS_ID = 0;
OUTPUT CPOOL;
END;
RUN;
は、だから我々は、失われたデータMPOOL
をマージ終わる
A M123
B M456
C M789
のみマージする私に3つのレコードを与えます私はすべてのレコードを維持し、欠落を埋める必要があります(MKEYを通じて、AレコードとBレコードを欠落IDにリンクする必要があります)。 W:
A M123
A M123
B M456
B M456
C M789
がSQL JOIN
のどのような私は、すべてのレコードを保持し、正常に参加されたもので行方不明を埋めるためにできるようになりますか?実現可能だが、MERGE
のデータはすべてのレコードを保持しない。私はこの例を遅らせる/保持する/記入することができますが、私が作業している大きなデータは他の要因によってマージ/結合が必要です。
これは有望なゴードンに見える、ありがとう。 警告:UNION ALLセット操作を実行するために、テーブルがNULL列で拡張されました。 警告:MKEYという名前の列は、選択式(またはビュー)に複製されます。 ' '警告:変数MKEYはファイルWORK.MERGEDに既に存在します。 ' – Foxer
@Foxer。 。 。これは結果に影響を及ぼしますか? –
はい、私は233,836のレコードを期待しており、233,598のレコードしか出力していません。それは困惑している238のレコードの違いです。 @Foxer。 – Foxer