两个循环,但一个循环,直到第一个循环在SAS中循环?

时间:2017-08-03 16:05:30

标签: macros sas do-loops

我有日期和代码。我想从表中获取一个月的数据。每两天选择性地浏览一下这些数据。我正在尝试将数据与另一个表匹配,并且仅根据彼此两天内的数据进行匹配。

现在,每个代码需要一个月的数据,然后匹配两天,然后每个代码再花费一个月的数据,然后匹配另外两天而不是每个代码获取一个月的数据1匹配整个月的数据它每两天一次,一旦月结束,每个代码2将经历另一个月的数据。

%let month='01JAN2016'd;
%macro queryLoop(startDate=, i=);


    %macro loop(Code1, Code1_B);

    %let p = %sysfunc(countw(&FACLNBR, %str( )));
    %do i=1 %to &p;
        %let O_Code1= %scan(&Code1, &i, %str( ));
            %let Code1_B = %scan(&Code1_B, &i, %str( ));

代码正文://这需要一个月的数据来准备匹配要求

Proc sql; 
    Create table Pool_of_data_month as 
      Select t1.match_requirement1, 
             T1.matchRequirement2,
             T1.MatchRequirement3,

From database.table as t1
Where (O_Code1 = &Code1) AND (datepart(BEGINDATE) BETWEEN &month AND &month+30);

///////////////////////////////////////这应该循环增量 以上数据每两天一次。这就是“在startdate和startdate之间+2正在做的事情。

PROC SQL;
   CREATE TABLE WORK.Matched_BY_THREE AS 
   SELECT t1.match_requirement1, 
                 T1.matchRequirement2,
                 T1.MatchRequirement3, 
                 t2.match_requirement1, 
                 T2.matchRequirement2,
                 T2.MatchRequirement3,
             FROM WORK.filtrate_matches t1
        LEFT JOIN WORK.FILTER_FOR_QUERY_FOR_TESTING_AHC t2 ON 
             (t1.requirement1 = t2.requirement2) AND 
             (t1.requirement3 = t2.requirement2) and 
            (datepart(t1.importantdate) BETWEEN &startDate AND &startDate+2)
    QUIT;
////////////////////////    




%end;
    %mend; 
    %loop(code1 code2 code3 code4, code1_b code2_b code3_b code4_B); 
//code1 and code1_b are a pair 


%mend queryLoop;

data list_of_dates;
i=1;
format date date9.;
do Date = '01JAN2016'd to '31JAN2016'd; //when 31JAN is hit loop again
string = catt('%queryLoop(startDate=', date, ', i=', i, ');');
call execute(string);
i+1;
output;
end;
run;

我试过切换循环没有运气。如何告诉SAS整个月,然后切换代码。

0 个答案:

没有答案