完全外部結合を行っている 2 つのテーブルがあります。それらは変数「accsnnum」で結合され、両方が共有します。しかし、私は問題を抱えています。accsnnum は両方のセットに存在する場合にのみ出力されますが、accsnum でグループ化された変数のカウントを比較しているため、両方に存在するかどうかに関係なく出力する必要があります。
説明のために、次のような labtable があります (変数は 2 つしかありません)。
accsnum lab_lbcount
A12 3
A11 5
A14 7
A13 5
そして、次のような rslttable (変数は 2 つしかありません):
accsnum rslt_lbcount
A15 5
A12 2
A14 7
A16 3
次のコードを使用して、これら 2 つを結合します。
proc sql;
create table both as
select Labtable.accsnnum label="Lab_accsnnum", Rslttable.accsnnum
label="Rslt_accsnnum", Labtable.Lab_lbcount label="Lab_lbtestcd_count",
Rslttable.Rslt_lbcount label="Rslt_lbtestcd_count",
Lab_lbcount-Rslt_lbcount as difference
from work.Labtable
full outer join work.Rslttable
on Labtable.accsnnum = Rslttable.accsnnum;
quit;
これにより、次の表が生成されます。
accsnum lab_lbcount rslt_lbcount difference
5 . .
A12 3 2 1
5 . .
A14 7 7 0
. 5 .
. 3 .
2 つのテーブルが結合する場所の accsnum のみが出力されますが、「lb_count」と「rslt_count」のカウントが含まれていることに注意してください。両方にない場合でも、その変数の accsnum を出力するか、accsnum で結合する方法を考え出す必要がありますが、2 つのテーブルのそれぞれから accsum を出力する必要があります。基本的に、出力は次のようになります。
accsnum lab_lbcount rslt_lbcount difference
A11 5 . .
A12 3 2 1
A13 5 . .
A14 7 7 0
A15 . 5 .
A16 . 3 .
または、次のようなものでも問題ありません。
accsnum lab_accsum rslt_accsum lab_lbcount rslt_lbcount difference
A11 . 5 . .
A12 A12 A12 3 2 1
A13 . 5 . .
A14 A14 A14 7 7 0
. A15 . 5 .
. A16 . 3 .
どんな助けでも大歓迎です。
編集:明確でない場合に備えて、SAS環境内でSQLコードを実行しています。しかし、それはコードにはほとんど関係がないはずです。再度、感謝します!