Sql в proc sql преобразование - PullRequest
0 голосов
/ 14 марта 2019

У меня есть 2 таблицы, которые содержат значения var, такие как (ID, дата, var1, var2, var3 ....)

Мне нужно получить данные из таблицы2 и добавить их в таблицу1, для которой (идентификатор или дата) не существует в таблице 1.

Я использую приведенный ниже код в sql для получения новых идентификаторов из tab2 в tab1:

INSERT INTO table1
SELECT * FROM table2 a
WHERE ID not in(select ID from table1 where ID=a.ID)

Вот код для добавления новой даты для существующих идентификаторов в tab2 в tab1:

INSERT INTO table1
    SELECT * FROM table2 a
    WHERE date not in(select date from table1 where ID=a.ID)

Я не знаю, как это сделать в proc sql. Пожалуйста, поделитесь эффективным методом для выполнения этой задачи.

Чтобы вставить новый идентификатор, который я использовал:

proc sql;
create table lookup as
select a.ID
from table1 a inner join table2 b
  on a.ID = b.ID
;
insert into table1 
select * from table2 a
where a.ID not in (select ID from lookup)
;
quit;

Это хорошо работает. Но не удалось вставить дату для существующих идентификаторов. Пожалуйста, предложите несколько идей для завершения этого шага. Заранее спасибо!

1 Ответ

0 голосов
/ 16 марта 2019

SAS SQL похож на SQl, который вы написали.

Те же САМОЕ операторы вставки могут быть деформированы как proc sqls в SAS, и они работают как charm.

Если ваш SQL работал, тоследующее тоже будет работать.

PROC SQL;
    INSERT INTO work.table1
    SELECT * FROM work.table2 a
    WHERE ID not in(select ID from work.table1 where ID=a.ID);

    INSERT INTO work.table1
    SELECT * FROM work.table2 a
    WHERE date not in(select date from work.table1 where ID=a.ID)
QUIT;
...