SAS SQL - две таблицы (A и B), где единственным общим полем является ключ - нужно все в A, что не в B

У меня есть две таблицы, где поля отличаются, за исключением общего ключа. Мне нужно хранить записи только с ключами, которые находятся в A, а НЕ в B. Мне не нужны записи, которые находятся только в B, или записи, которые находятся как в A, так и в B (так, чтобы исключить что-либо во внутреннем соединении).

Я вижу ссылки SAS SQL на "EXCEPT", но кажется, что их можно использовать, только если все поля совместно используются двумя таблицами, поскольку ключ не используется. Есть ли другой способ?

4 ответа

Вы должны использовать SQL?

data want ;
  merge A (in=in1) B(keep=id in=in2);
  by id;
  if in1 and not in2 ;
run; 

Просто используйте NOT EXISTS:

proc sql;
    select a.*
    from a
    where not exists (select 1 from b where a.key = b.key);

Вы могли бы использовать exists оператор:

SELECT *
FROM   a
WHERE  NOT EXISTS (SELECT *
                   FROM   b
                   WHERE  a.id = b.id)

Еще один подход с except чтобы получить все идентификаторы (или ключевой столбец) в A, которые не находятся в B. Затем используйте те ids, чтобы получить все записи от A.

select a.*
from a
inner join (select id from a except select id from B) t
on a.id = t.id
Другие вопросы по тегам