Создание нескольких новых вычисляемых столбцов в proc SQL - PullRequest
0 голосов
/ 03 ноября 2018

Я хочу написать несколько операторов case и создать несколько новых переменных (здесь новая переменная - dob_match), создаваемых в том же коде proc sql. Можно ли это сделать? В противном случае, мне нужно написать несколько таких сегментов кода sql proc, а затем соединить эти таблицы вместе. Тем не менее, огромные таблицы объединяются, 4-5 огромных таблиц сталкиваются с проблемами пространства и времени на моем компьютере.

Может кто-нибудь предложить какой-нибудь эффективный способ сделать это в SAS (каждая таблица имеет около 200К строк).

Спасибо.

В основном, я хочу сделать -

Proc sql

Создать совпадение таблицы как

( Выберите corc. , pdd. ,

Case Когда тогда еще <> заканчивается как NEW_VARIABLE 1

Case Когда тогда еще <> заканчивается как NEW_VARIABLE 2 , , , случай Когда тогда еще <> заканчивается как NEW_VARIABLE 6

от newlink.CORC_uprob as corc
полный JOIN WORK.unmatchpdd как pdd на corc.hospitalid2 = pdd.oshpdid2

);

Quit;

Мой код SAS-

 proc sql; 
create
table DOB_match as 

(
select corc.Medrecn as MRN, pdd.SSN as pSSN, corc.birthdate as corcbday, pdd.bthdate as pddbday, corc.newIDCORC as newIDCORC, pdd.newIDPDD as newIDPDD, 
corc.hospitalid2 as corcHosp, pdd.oshpdid2 as pddhosp,
corc.dischargedate as dsdt_corc, pdd.dschdate as dsdt_pdd, corc.Surgdate as Surgdt_corc, pdd.PDDCABGSurgDt as Surgdt_pdd,
corc.*, pdd.*,


case 

when corc.day = pdd.day and corc.month = pdd.month and corc.year = pdd.year then 100
else -10 end as dob_match

from newlink.CORC_uprob as corc   
full JOIN WORK.unmatchpdd as pdd
on
corc.hospitalid2 = pdd.oshpdid2 ); 

quit; 

1 Ответ

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

Я понял это.

    proc sql; 
   create
   table DOB_match as 

  (
 select corc.Medrecn as MRN, pdd.SSN as pSSN, corc.birthdate as corcbday,     pdd.bthdate as pddbday, corc.newIDCORC as newIDCORC, pdd.newIDPDD as   newIDPDD, 
 corc.hospitalid2 as corcHosp, pdd.oshpdid2 as pddhosp,
corc.dischargedate as dsdt_corc, pdd.dschdate as dsdt_pdd, corc.Surgdate       as Surgdt_corc, pdd.PDDCABGSurgDt as Surgdt_pdd,
corc.*, pdd.*,


case 
when corc.day = pdd.day and corc.month = pdd.month and corc.year =      pdd.year then 100
 else -10 end as dob_match,

 case 
 when corc.x = pdd.y then 100
else -10 end as test



from newlink.CORC_uprob as corc   
full JOIN WORK.unmatchpdd as pdd
 on
corc.hospitalid2 = pdd.oshpdid2 ); 

 quit; 
...