2012-04-16 2 views
0

Кто-нибудь знает, как вставить только «новую» строку в существующую таблицу с помощью SAS PROC SQL?Как вставить только новую (не повторяющуюся) строку в существующую таблицу - в proc sql - sas?

proc sql; 
create table class as 
select * 
from sashelp.class 
where sex = 'F'; 
quit; 

proc sql; 
create table classm as 
select * 
from sashelp.class 
where sex = 'M' or Name = 'Alice'; 
quit; 

proc sql; 
insert into class 
select * 
from classm ; 
quit; 

Оператор вставки не позволяет мне использовать где заявление вставить только 10 новую строку из classm (без Алисе)

Есть ли способ обойти это? Поскольку я работаю с большими данными, я хотел бы сделать это с помощью proc sql, или шаг данных в порядке.

Благодаря

+2

Добавление первичного ключа в определение таблицы - это еще один способ заставить таблицу отклонить дубликаты. См. Http://support.sas.com/documentation/cdl/en/sqlproc/62086/HTML/default/viewer.htm#a001396785.htm – DataParadigms

+0

Я не совсем понимаю ваше дело здесь. Но похоже, что решение этой проблемы было бы сложным предложением 'where', например' where (sex = 'M' или Name = 'Alice') или sex = 'F''. –

ответ

2

Это работало для меня ...

proc sql; 
create table class as 
select * 
from sashelp.class 
where sex = 'F'; 
quit; 

proc sql; 
create table classm as 
select * 
from sashelp.class 
where sex = 'M' or Name = 'Alice'; 
quit; 

proc sql; 
insert into class 
select * 
from classm 
where name^="John"; 
quit; 
+0

Это работало и на меня. – DataParadigms

0

почему бы не использовать слияния?

Вы сортируете свои две таблицы по столбцам, которые являются ссылочными (id), и объединяют две таблицы с выбранными ключами.