回答

收藏

如何使用Proc SQL查找仅存在于一个表中而不存在于另一个表中的所有记录?

技术问答 技术问答 213 人阅读 | 0 人回复 | 2023-09-14

我正在尝试通过任务在《企业指南》中执行此操作,否则,我将仅使用数据步骤。
- U2 S% W9 q8 U3 B5 n! v: v5 ]在数据步骤中,这将是:& n4 S: B6 i$ z5 P7 |. d
data names;
+ o( U) A9 l1 s' I7 v6 A* j input name $;; B# g# N% j  s/ U
datalines;; v7 @( W& D. _6 w3 }
  John8 t$ }3 \4 \7 p( I$ R% I
  Mary! S( A+ y( n* o9 A3 Y, i- n
  Sally7 @6 w  l, b: ]' X, H. P; h
  Fred
% ?6 H" t/ g5 n8 L' n  u  Paul
* X; ^$ O# ^( q$ o- J2 d* ] ;
0 @7 l5 u. c/ d( H8 J7 Urun;3 v% j$ a. A( M# Y; Y9 a9 Q
data check;- _' g! `+ j% K* W% Z$ N
input name $;
4 h& ~! Z, O& ]' t datalines;
1 _, c; z! y7 A: ?9 ?9 f" K  Mary
$ y! N, g- H8 h  Fred& p, F5 s1 L8 m
;) h" B' X; k: s0 w7 b
Proc sort data=names; by name; run;
4 s6 u2 z* J, Z8 N- G( a8 p" GProc sort data=check; by name; run;+ d5 d, ^2 Z: z  S' t% q
Data work.not_in_check;! g+ u  R# k9 p* e
merge names(in=n) check(in=c);: X4 p4 ^  f& u6 M' P
by name;* Y- g% G# w0 R3 B3 r4 w5 n
if n and not c;
1 R  E3 ]9 E' A) R2 k9 z3 i' ~& Prun;" A$ n; Y% e' {" P4 y2 H
                1 q. K  k0 A: J- }& x9 H
解决方案:3 T( b( t5 v; b# R$ A; d  A
                , L3 k8 I  z+ Z, b. R9 T' h

7 K' H) q) X2 T. H" c0 M2 a" e4 g" k$ A
                这是一种方法。当然还有很多其他的。
& C$ q! g7 ~1 Vproc sql;* w  A; K: O& G
create table not_in_check as
+ ^4 U7 g: o* A/ [, }7 Q select name
% z& `7 T1 ^& S) I1 _& i from names
6 ], W& ^, J. o( {1 ]8 Z4 A- G where name not in (select name from check);
7 \! t3 X' O9 f4 E8 `- wquit;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则