<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic recursive joins with PROC SQL in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411824#M12586</link>
    <description>&lt;P&gt;I have a recursive data I would want to re-structure analysis:&lt;/P&gt;&lt;P&gt;data :&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input id pid ;&lt;BR /&gt;cards;&lt;BR /&gt;1 0&lt;BR /&gt;2 1&lt;BR /&gt;3 1&lt;BR /&gt;4 2&lt;BR /&gt;5 2&lt;BR /&gt;6 3&lt;BR /&gt;7 0&lt;BR /&gt;8 7&lt;BR /&gt;9 8&lt;BR /&gt;10 8&lt;BR /&gt;11 7&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;I would like to structure it like this :&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;1id&lt;/TD&gt;&lt;TD&gt;2id&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The challenge I have is I don't know how many levels I have in the data set.&lt;/P&gt;&lt;P&gt;I tried the SAS support example (&lt;A href="http://support.sas.com/kb/25/437.html" target="_blank"&gt;http://support.sas.com/kb/25/437.html&lt;/A&gt;) but I keep getting errors (ERROR: Ambiguous reference, column level is in more than one table.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is much appreciated.&lt;/P&gt;</description>
    <pubDate>Thu, 09 Nov 2017 05:43:27 GMT</pubDate>
    <dc:creator>HabAM</dc:creator>
    <dc:date>2017-11-09T05:43:27Z</dc:date>
    <item>
      <title>recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411824#M12586</link>
      <description>&lt;P&gt;I have a recursive data I would want to re-structure analysis:&lt;/P&gt;&lt;P&gt;data :&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input id pid ;&lt;BR /&gt;cards;&lt;BR /&gt;1 0&lt;BR /&gt;2 1&lt;BR /&gt;3 1&lt;BR /&gt;4 2&lt;BR /&gt;5 2&lt;BR /&gt;6 3&lt;BR /&gt;7 0&lt;BR /&gt;8 7&lt;BR /&gt;9 8&lt;BR /&gt;10 8&lt;BR /&gt;11 7&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;I would like to structure it like this :&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;1id&lt;/TD&gt;&lt;TD&gt;2id&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The challenge I have is I don't know how many levels I have in the data set.&lt;/P&gt;&lt;P&gt;I tried the SAS support example (&lt;A href="http://support.sas.com/kb/25/437.html" target="_blank"&gt;http://support.sas.com/kb/25/437.html&lt;/A&gt;) but I keep getting errors (ERROR: Ambiguous reference, column level is in more than one table.)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is much appreciated.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Nov 2017 05:43:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411824#M12586</guid>
      <dc:creator>HabAM</dc:creator>
      <dc:date>2017-11-09T05:43:27Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411841#M12592</link>
      <description>&lt;P&gt;Since this is an interesting issue (at least for me), I invested some brain cycles and came up with this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id pid;
cards;
1 0
2 1
3 1
4 2
5 2
6 3
7 0
8 7
9 8
10 8
11 7
;
run;

/* first, let's create an initial dataset that fits the parameterized SQL's */
proc sql;
create table children1 as
select pid as id, id as id1
from have;
quit;

/* now, we build a macro that iterates recursively until an empty result is created */
%macro recursion;
/* initialize */
%let lev=2;
%let flag=1;

%do %while (&amp;amp;flag.); /* until result is reached */

proc sql noprint;
create table children&amp;amp;lev. as /* create next level */
select a.*, b.id%eval(&amp;amp;lev.-1) as id&amp;amp;lev.
from children%eval(&amp;amp;lev.-1) a full join children%eval(&amp;amp;lev.-1) b
on b.id = a.id%eval(&amp;amp;lev.-1)
where
  a.id not in (0,.) /* remove root lines */ and
  a.id not in (select distinct id%eval(&amp;amp;lev.-1) from children%eval(&amp;amp;lev.-1) where id ne 0)
  /* the sub-select removes all lines that already appear as children of another */
order by a.id
;
/* check if newly created column is empty */
select coalesce(sum(id&amp;amp;lev.),0) into :flag from children&amp;amp;lev.;
/* coalesce needed because SQL sum() creates a missing value if all values are missing */
/* is different from data step sum() */
quit;

  %let lev=%eval(&amp;amp;lev.+1); /* increment */
%end;

/* since lev now points to a not-yet-created dataset, and we want the next-to-last (non-empty) one, reduce by 2 */
/* sort, so it looks pretty */
proc sort
  data=children%eval(&amp;amp;lev.-2)
  out=result
;
by id
%do i = 1 %to %eval(&amp;amp;lev.-2);
  id&amp;amp;i
%end;
;
run;
%mend;
%recursion

proc print data=result noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result:&lt;/P&gt;
&lt;PRE&gt;id    id1    id2

 1      2      4
 1      2      5
 1      3      6
 7      8      9
 7      8     10
 7     11      .
&lt;/PRE&gt;
&lt;P&gt;You will want to test it against larger, more complex data.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Nov 2017 09:08:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411841#M12592</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-11-09T09:08:14Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411876#M12596</link>
      <description>&lt;P&gt;There is some specific name for this type of thing, parent-child hierarchies or graphs.&amp;nbsp; You would find the following interesting reads:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.sas.com/kb/25/968.html" target="_blank"&gt;http://support.sas.com/kb/25/968.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://communities.sas.com/t5/Base-SAS-Programming/Parent-Child-hierarchy/td-p/293028" target="_blank"&gt;https://communities.sas.com/t5/Base-SAS-Programming/Parent-Child-hierarchy/td-p/293028&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Various solutions provided there.&lt;/P&gt;</description>
      <pubDate>Thu, 09 Nov 2017 11:32:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/411876#M12596</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-11-09T11:32:26Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412009#M12599</link>
      <description>&lt;P&gt;Thank you&lt;/P&gt;</description>
      <pubDate>Thu, 09 Nov 2017 16:47:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412009#M12599</guid>
      <dc:creator>HabAM</dc:creator>
      <dc:date>2017-11-09T16:47:35Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412153#M12602</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;Not really&amp;nbsp;recursive imho as you don't have a function calling itself.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rather you have a loop that builds something equivalent to this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
    create table T as select curr.*, new1.ID as ID1, new2.ID as ID2, new3.ID as ID3, new4.ID as ID4
    from HAVE curr 
           left join 
         HAVE new1 
           on curr.ID=new1.PID
           left join 
         HAVE new2 
            on new1.ID=new2.PID
           left join 
         HAVE new3 
           on new2.ID=new3.PID
           left join 
         HAVE new4 
           on new3.ID=new4.PID
  having PID=0
  order by 1,2,3,4,5;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result ( I added a level with value 12 &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;PID&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ID&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ID1&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ID2&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ID3&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;ID4&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;9&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;10&lt;/TD&gt;
&lt;TD class="r data"&gt;12&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;11&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To me, a truly recursive macro should call itself, and could look like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro gorecurse(iter);
  %if &amp;amp;iter= %then %do;
    %let iter=1; 
    proc sql;
      create table LEV&amp;amp;iter. as select PID as ID0, ID as ID1 from HAVE;
    quit;
    %let iter=2; 
  %end;
  proc sql;
    create table LEV&amp;amp;iter. as select curr.* , new.ID1 as ID&amp;amp;iter. 
      from LEV%eval(&amp;amp;iter.-1) curr left join LEV%eval(&amp;amp;iter.-1) new 
      on  new.ID0=curr.ID%eval(&amp;amp;iter.-1)
      and curr.ID0=0 ;
    create table MATCHED as select unique ID%eval(&amp;amp;iter.-1) from LEV&amp;amp;iter. where ID&amp;amp;iter. ;
    delete from LEV&amp;amp;iter. where ID0 in (select * from MATCHED); 
  quit;
  %if &amp;amp;sqlobs. %then %gorecurse(%eval(&amp;amp;iter.+1)); 
%mend; 
%gorecurse&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.LEV5" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;ID0&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ID1&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ID2&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ID3&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ID4&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;ID5&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;9&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;11&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="r data"&gt;6&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;TD class="r data"&gt;7&lt;/TD&gt;
&lt;TD class="r data"&gt;8&lt;/TD&gt;
&lt;TD class="r data"&gt;10&lt;/TD&gt;
&lt;TD class="r data"&gt;12&lt;/TD&gt;
&lt;TD class="r data"&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just my 2 cents. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 09 Nov 2017 21:41:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412153#M12602</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2017-11-09T21:41:43Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412231#M12606</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/16961"&gt;@ChrisNZ&lt;/a&gt; You are right of course. What I've done is the usual transformation of a recursive problem into a iterative algorithm, that one does where true recursive elements are either not present within a language, or where a recursive method might be a hindrance to further maintenance.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nice work on the macro.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Nov 2017 06:59:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412231#M12606</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-11-10T06:59:42Z</dc:date>
    </item>
    <item>
      <title>Re: recursive joins with PROC SQL</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412720#M12613</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;&amp;nbsp;Yes, but recursions tickle the mind more,,,&amp;nbsp; &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 12 Nov 2017 20:19:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/recursive-joins-with-PROC-SQL/m-p/412720#M12613</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2017-11-12T20:19:05Z</dc:date>
    </item>
  </channel>
</rss>

