Sas 如果两个数据集上的条件都满足,则合并

Sas 如果两个数据集上的条件都满足,则合并,sas,Sas,我有两个数据集,只有在两个数据集内的数据集都满足某个条件时,我才希望它们合并 下面的代码不正确 data cohrt2_base_pre_&m2. cohrt2_base_a4lmig_&m2.; length Base_indicator_&m2. $20.; merge if pre_cb_&m3. = pre_cb_&m4. then do; custon.cohrt_base_pre_&m1. (in

我有两个数据集,只有在两个数据集内的数据集都满足某个条件时,我才希望它们合并

下面的代码不正确

data cohrt2_base_pre_&m2. cohrt2_base_a4lmig_&m2.;
     length Base_indicator_&m2. $20.;
     merge if pre_cb_&m3. = pre_cb_&m4. then do;
          custon.cohrt_base_pre_&m1. (in=a)
          VALIAT_B.STATPST_M1_&m2. (in=b drop=base
                                    (rename=(priceplan=Pre_priceplan_&m4.)));

    by kit_sim msisdn
    end;
PROC SQL可以做到这一点:

proc sql ; create table want (drop=base) as select a.*, b.*, b.priceplan as pre_priceplan_&m4 from custon.cohrt_base_pre_&m1 a inner join VALIAT_B.STATPST_M1_&m2 b on a.kit_sim = b.kit_sim and a.msisdn = b.msisdn and pre_cb_&m3 = pre_cb_&m4 ; quit ; proc-sql; 创建所需表格(drop=base)为 选择a.*、b.*、b.价格计划作为预定价计划(&m4) 来自custon.cohrt_base_pre_&m1 a 内连接 a.kit\U sim=B.kit\U sim上的有效状态M1和m2 B 和a.msisdn=b.msisdn 和pre_cb_&m3=pre_cb_&m4; 退出
所以这两个数据集中都存在pre_cb_&m3和pre_cb&m4,您想过滤它们吗?如果是,那么您可以添加一个where选项,类似(未测试):


如果变量确实存在于两个数据集中,它们将在合并中发生冲突,这通常是个坏主意。另一个想法是为每个数据集创建一个视图,然后合并这两个视图。这将允许您避免冲突。

如果我想添加以下内容..sql中的代码会是什么样子?如果是a和b,则基准指示器=常数;如果是a而不是b,则基准指示器=搅动;如果是b,而不是a,则基准指示器为'Acquisition';如果预断路器和m3。均衡器后断路器和m4。然后输出cohrt2_base_a4lmig_m2。;
data cohrt2_base_pre_&m2.
     cohrt2_base_a4lmig_&m2.
;
     length Base_indicator_&m2. $20.;
     merge 
          custon.cohrt_base_pre_&m1. (where=(pre_cb_&m3. = pre_cb_&m4.)
                                      in=a
                                      )
          VALIAT_B.STATPST_M1_&m2.   (where=(pre_cb_&m3. = pre_cb_&m4.) 
                                      drop=base
                                      rename=(priceplan=Pre_priceplan_&m4.)
                                      in=b
                                      );

    by kit_sim msisdn;
run;