<?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 Re: Many to many merge without ID in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973259#M377668</link>
    <description>&lt;P&gt;Kurt,&lt;/P&gt;
&lt;P&gt;Your code could be simpler as this:&lt;/P&gt;
&lt;PRE&gt;rc = bi.first();
do while (rc = 0);
  output;
  rc = bi.next();
end;
drop rc;&lt;BR /&gt;
---------------&amp;gt;

do while (bi.next() = 0);
  output;
end;
&lt;/PRE&gt;</description>
    <pubDate>Tue, 26 Aug 2025 07:44:53 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2025-08-26T07:44:53Z</dc:date>
    <item>
      <title>Many to many merge without ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973235#M377664</link>
      <description>&lt;P&gt;I have two datasets: A and B. I would like to merge them such that for each record in dataset A, every record in dataset B is matched and the values from A are retained until the next row of A is reached. A and B do not have an ID to match on.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;See below for examples and desired results. I think the solution might require a set statement for dataset B inside a do loop with manual output control but I've been thwarted by the end of file processing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset A:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Time&lt;/TD&gt;&lt;TD&gt;X1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&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;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset B:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Horizon&lt;/TD&gt;&lt;TD&gt;Curve&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired Dataset:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Time&lt;/TD&gt;&lt;TD&gt;X1&lt;/TD&gt;&lt;TD&gt;Horizon&lt;/TD&gt;&lt;TD&gt;Curve&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&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;1000&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&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;1000&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 25 Aug 2025 23:19:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973235#M377664</guid>
      <dc:creator>sjb1</dc:creator>
      <dc:date>2025-08-25T23:19:45Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973236#M377665</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;   
input ID Time X1;
datalines;
1 1 100
1 2 1000
2 1 200
2 2 2500
2 3 300
3 1 100
3 2 500
;
run;

data B;
input Horizon Curve;
datalines;
1 100
2 90
;
run;

data Want;
  set A;
  do row = 1 to obsnum;
    set B point = row nobs = obsnum;
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Aug 2025 00:07:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973236#M377665</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2025-08-26T00:07:03Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973240#M377666</link>
      <description>&lt;P&gt;It is just a CLASSIC Cartesian Product Problem.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;   
input ID Time X1;
datalines;
1 1 100
1 2 1000
2 1 200
2 2 2500
2 3 300
3 1 100
3 2 500
;
run;

data B;
input Horizon Curve;
datalines;
1 100
2 90
;
run;

proc sql;
create table want as
select *
 from A,B
  order by ID,Time;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Aug 2025 03:05:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973240#M377666</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-08-26T03:05:03Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973245#M377667</link>
      <description>&lt;P&gt;For the pure fun, the hash method:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set a;
if 0 then set b;
if _n_ = 1
then do;
  declare hash b (dataset:"b");
  b.definekey("horizon");
  b.definedata("horizon","curve");
  b.definedone();
  declare hiter bi ("b");
end;
rc = bi.first();
do while (rc = 0);
  output;
  rc = bi.next();
end;
drop rc;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Aug 2025 07:16:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973245#M377667</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2025-08-26T07:16:22Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973259#M377668</link>
      <description>&lt;P&gt;Kurt,&lt;/P&gt;
&lt;P&gt;Your code could be simpler as this:&lt;/P&gt;
&lt;PRE&gt;rc = bi.first();
do while (rc = 0);
  output;
  rc = bi.next();
end;
drop rc;&lt;BR /&gt;
---------------&amp;gt;

do while (bi.next() = 0);
  output;
end;
&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Aug 2025 07:44:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-ID/m-p/973259#M377668</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-08-26T07:44:53Z</dc:date>
    </item>
  </channel>
</rss>

