2013-07-27 2 views
-2

У меня ниже двух наборов данных и нужен третий набор данных в качестве вывода.SQL Left Join логика в SAS Merge или шаг данных

ONE    TWO 
----------   ---------- 
ID FLAG   NUMB 
1 N    2 
2 Y    3 
3 Y    9 
4 N    2 
5 N    3 
9 Y    9 
10 Y 

OUTPUT 
------- 
ID FLAG NEW 
1 N N 
2 Y Y 
3 Y Y 
4 N N 
5 N N 
9 Y Y 
10 Y N 

Если ONE.ID находится в TWO.NUMB и это ONE.FLAG = Y, то новая переменная NEW = Y еще NEW = N

Я был в состоянии сделать это с помощью PROC SQL, как ниже.

proc sql; 
create table output as 
(
    select distinct id, flag, case when numb is null then 'N' else 'Y' end as NEW 
    from one 
    left join 
    two 
    on id = numb 
    and flag = 'Y' 
); 
quit; 

Это можно сделать на этапе DATA/MERGE?

+0

Пожалуйста, приложить усилия, чтобы решить эту проблему первой, и после что вы пробовали. – Joe

+0

Извините, чувак, я дал вам ваш единственный вопрос. Теперь покажи некоторую работу. –

+0

@HongOoi Я пробовал с PROC SQL, прежде чем размещать вопрос здесь, и он работал, но не смог обработать данные tep/merge, поскольку я только начал изучать SAS. Теперь я обновил вопрос с помощью инструкций PROC SQL – athresh

ответ

0

, поскольку у вас есть SQL шаг попыткой здесь улучшение на этой

--this шаг SQL не требует merge--

proc sql noprint; 

    create table output as 
    select distinct *, case 
          when id in (select distinct numb from two) then "Y" 
          else "N" 
         end as new 
    from one 
    ; 
quit;