SQL到proc的SQL转换

时间:2019-03-14 11:28:27

标签: sas proc-sql

我有2个表,其中包含var值,例如(ID,日期,var1,var2,var3 ....)

我需要从table2中获取数据并将其添加到table1中不存在(ID或日期)的table1中。

我正在sql中使用以下代码从tab2到tab1获取新ID:

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

这是将tab2中现有ID的新日期添加到tab1的代码:

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

我不知道如何在proc sql中执行此操作。 请分享执行此任务的有效方法。

要插入我使用的新ID:

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;

这很好。但是,它无法为现有ID插入日期。 请提出一些想法以完成此步骤。 预先感谢!

1 个答案:

答案 0 :(得分:0)

SAS SQL与您编写的SQl类似。

在SAS中,可以将SAME插入语句扭曲为proc sql,它们的工作方式就像魅力。

如果您的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;