Что такое шаговый эквивалент DATA этого SQL-запроса? - PullRequest
0 голосов
/ 26 ноября 2018

Привет: Всем, кто хорош в SAS, пожалуйста, превратите этот SQL в шаг DATA:

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;

1 Ответ

0 голосов
/ 26 ноября 2018

грубая попытка, не проверенная, потому что нет данных или чего-то подобного.

Сначала объедините и присоединитесь к номеру приложения, а затем добавьте флаг на другом шаге.Или вы можете изменить 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;
...