2015-11-12 1 views
-1

У меня есть два набора данных и только хочу, чтобы они сливались, если встречаются определенные условия в обоих наборах.Объединить, если условие выполнено на обоих наборах данных

Неверный код.

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; 

ответ

1

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 ; 
+0

спасибо, позвольте мне попробовать –

+0

, если я хочу добавить следующее ... что бы выглядел код в sql? \t \t если a и b затем Base_indicator_ & m2. = 'Constant'; \t если a, а не b, то Base_indicator_ & m2. = 'Churn'; \t, если b, а не тогда Base_indicator_ & m2. = 'Приобретение'; если pre_cb_ & m3. eq post_cb_ & m4. затем выводят cohrt2_base_a4lmig_ &m2.; –

0

Так pre_cb_ & м3 и pre_cb & m4 существуют в обоих наборах данных, и вы хотите, чтобы фильтровать их? Если это так, то вы можете добавить где вариант, что-то вроде (непроверенные):

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; 

Если переменные существуют в обоих наборах данных, они будут столкнуться в объединении, который, как правило, плохая идея. Другой идеей было бы создать представление о каждом наборе данных, который выполняет подмножество, а затем объединить два представления. Это должно позволить вам избежать столкновения.

Смежные вопросы