Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas PROC SQL案例何时发生?_Sas - Fatal编程技术网

Sas PROC SQL案例何时发生?

Sas PROC SQL案例何时发生?,sas,Sas,我想合并以下两个表。最后一个表与表B类似。仅根据anchor_num和readm_num更改anchor和readmit的名称 如果b.anchor\u num=a.sprv\u num,则b.anchor\u provider=a.sprv\u全名; 如果b.readm_num=a.sprv_num,则b.readmit_provider=a.sprv_全名 Table A SPRV_NUM SPRV_FULL_NAME 70010Q40 NFI MASSACHUSETTSINC

我想合并以下两个表。最后一个表与表B类似。仅根据anchor_num和readm_num更改anchor和readmit的名称

如果b.anchor\u num=a.sprv\u num,则b.anchor\u provider=a.sprv\u全名; 如果b.readm_num=a.sprv_num,则b.readmit_provider=a.sprv_全名

Table A
SPRV_NUM    SPRV_FULL_NAME
70010Q40    NFI MASSACHUSETTSINC
700122330   NORTHAMPTON VA MEDICAL CENTER
700122223   RADIUS SPECIALTY HOSPITAL LLCDBA
700122331   SHAUGHNESSY KAPLANREHAB HOSPINC
700122330   SPAULDING HOSPITALCAMBRIDGE INC
70010Q402   SPRING HILL RECOVERY CENTER INC
700122222   SPRINGFIELD PARK VIEW HOSPITALDBA
700122222   SPRINGFIELD PARK VIEW HOSPITALDBA
70010Q057   ST ANNES HOME INC
70010Q007   STAR OF RHODE ISLAND

Table B
anchor_num          anchor              readm_num         readmit
700122224   Harrington memorial hospital    700122229   first psychiatricap inc
700122224   Harrington memorial hospital    700122224   Harrington memorial hospital
700122330   NORTHAMPTON VA MEDICAL          700122223   RADIUS SPECIALTY HOSPITAL
700122222   SPRINGFIELD PARK VIEW           700122222   SPRINGFIELD PARK VIEW 
700122226   HENRY HEYWOOD  HOSPITAL         70010Q402   SPRING HILL RECOVERY INC
70010Q057   ST ANNES HOME INC               70010Q057   ST ANNES HOME INC
谢谢,
Jane

首先使用proc sort从表a中删除重复的sprv_num:

proc sort data=tablea out=tablea2 nodupkey;
    by sprv_num;
run;
nodupkey函数用于删除包含重复排序变量的观测值

然后合并表:

proc sql;
    create table final as
    select b.anchor_num, coalesce(x.sprv_full_name, b.anchor) as anchor_provider, 
        b.readm_num, coalesce(y.sprv_full_name, b.readmit) as readmit_provider
    from tableb as b 
        left join tablea2 as x on b.anchor_num = x.sprv_num 
        left join tablea2 as y on b.readm_num = y.sprv_num
    order by anchor_num;
quit;
coalesce函数返回第一个非缺失值。这意味着,如果表a对于给定的anchor_num或readm_num没有值,则名称取自表b。我将表a合并两次,因为有两个不同的地方需要一个名称