Sas 此SQL查询的数据步骤等效于什么?

Sas 此SQL查询的数据步骤等效于什么?,sas,Sas,您好:任何擅长SAS的人,请将此SQL转换为数据步骤: create table tableD nologging as select a.acct, b.app_dt, case when a.acct in (select acct from tableC) then 1 else 0 end prom_ind from tableA a inner join tableB b on a.application_no = b.application_no where to_ch

您好:任何擅长SAS的人,请将此SQL转换为数据步骤:

create table tableD nologging as
select 
  a.acct,
  b.app_dt,
  case when a.acct in (select acct from tableC) then 1 else 0 end prom_ind
from tableA a
inner join tableB b
on a.application_no = b.application_no
where to_char(b.app_dt,'yyyymmdd') between '20150101' and '20150630' ;
quit;

粗糙的尝试,未经测试,因为没有数据等

首先在应用程序编号上合并并加入,然后在另一个步骤中添加标志。或者您可以修改SQL以在PROC SQL中工作,这是一个简单的练习

data part1;
merge tableA (in=A) tableB(in=B where=(appt_dt between '01Jan2015'd and '30Jun2015'd );
by application_no;
if a and b;
keep acct app_dt application_no;
run;

data part2;
merge part1 (in=p1) tableC (in=C);
by acc;
if p1;
if p1 and C then prom_ind=1;
else prom_ind=0;
run;
SAS SQL:

proc sql;
create table tableD nologging as
select 
  a.acct,
  b.app_dt,
  case when a.acct in (select acct from tableC) then 1 else 0 end prom_ind
from tableA a
inner join tableB b
on a.application_no = b.application_no
where b.app_dt between '01Jan2015'd and '30Jun2015'd ;
quit;

要获得帮助,请用文字说明SQL正在做什么。还提供样本输入数据集以及该样本输入的结果数据集应是什么。您可以在proc sql中使用相同的东西,但last where Station除外。您可以在“2015年1月1日”和“2015年6月30日”之间将其更改为app_dt。您尝试过什么?你知道如何合并两个数据集吗?您知道=中的数据集选项