<?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: Updating column in merged dataset based on comparison with old dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535724#M147140</link>
    <description>&lt;P&gt;Yes i know. Hence the reason i admitted I made a mistake. Just got back to my computer. Let me take a closer look&lt;/P&gt;</description>
    <pubDate>Thu, 14 Feb 2019 19:53:29 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2019-02-14T19:53:29Z</dc:date>
    <item>
      <title>Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535648#M147113</link>
      <description>&lt;P&gt;I have a dataset that is submitted each month. It consists of a list of teachers and the classes they teach. If a teacher shows up in one class list for this month and they don't show up in the class for next month, the endDate of the column for the newly merged dataset will be updated. How do I&amp;nbsp; update the endDate column of the merged dataset. In my example , the teacher with id 1 did not show up for class B in februrary so the end date is January.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset for January&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;id className startdate&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;enddate&lt;BR /&gt;1&amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;BR /&gt;1&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;BR /&gt;2&amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset for February&lt;BR /&gt;id&amp;nbsp; &amp;nbsp; className&amp;nbsp; &amp;nbsp;startdate&amp;nbsp; &amp;nbsp; enddate&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/02/2019&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/02/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/02/2019&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset for march&lt;BR /&gt;id schoolName startdate enddate&lt;BR /&gt;1&amp;nbsp; &amp;nbsp;A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/03/2019&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/03/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/03/2019&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;P&gt;Data Want&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;id&amp;nbsp; &amp;nbsp; className&amp;nbsp; &amp;nbsp;startdate&amp;nbsp; &amp;nbsp; enddate&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/01/2019&amp;nbsp; &amp;nbsp; &amp;nbsp;01/01/2019&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/02/2019&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/03/2019&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01/03/2019&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/01/2019&lt;BR /&gt;2&amp;nbsp; &amp;nbsp; A&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/02/2019&amp;nbsp; &amp;nbsp; &amp;nbsp;01/02/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/01/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/02/2019&lt;BR /&gt;3&amp;nbsp; &amp;nbsp; B&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01/03/2019&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 20:13:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535648#M147113</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-14T20:13:22Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535653#M147116</link>
      <description>left join jan to feb by id and class. Then enddate in 'want' would be something like 'case when feb.endate is missing then jan.startdate end'</description>
      <pubDate>Thu, 14 Feb 2019 17:35:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535653#M147116</guid>
      <dc:creator>tomrvincent</dc:creator>
      <dc:date>2019-02-14T17:35:06Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535665#M147119</link>
      <description>&lt;P&gt;Hi OLUGBOJI&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One way:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data january;
informat id 1. class $1. startdate ddmmyy10.;
format startdate ddmmyyd10.;
input id class startdate;
datalines;
1   A               01/01/2019
1   B               01/01/2019
2   A               01/01/2019
3   B               01/01/2019
;
run;

data february;
informat id 1. class $1. startdate ddmmyy10.;
format startdate ddmmyyd10.;
input id class startdate;
datalines;
1       A           01/02/2019
2       A           01/02/2019
3       B           01/02/2019
;
run;
 
data all; set january february;
run;

* max enddate pr. class;
proc sql;
create table classmax as
	select distinct class, max(startdate) as classenddate format=ddmmyyd10.
	from all
	group by class;
quit;

* max enddate pr. teacher/class;
proc sql;
create table teacherclassmax as
	select distinct id, class, max(startdate) as tcenddate format=ddmmyyd10.
	from all
	group by id, class;
quit;
 
* join max. enddate pr. class on all classes;
proc sql;
	create table all_classend as
		select all.id, all.class, all.startdate, classmax.classenddate
        from all left join classmax
		on all.class = classmax.class;
quit;

* join teacher/class-enddate, if not = class-enddate;
proc sql;
	create table want as
		select all_classend.id, all_classend.class, all_classend.startdate, teacherclassmax.tcenddate
        from all_classend left join teacherclassmax
		on 
			all_classend.id = teacherclassmax.id and
			all_classend.class = teacherclassmax.class and
			all_classend.classenddate ne teacherclassmax.tcenddate
		order by id, class, startdate;
quit;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="wantteacherclass.gif" style="width: 299px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/27154iD05515CFD5119EEF/image-size/large?v=v2&amp;amp;px=999" role="button" title="wantteacherclass.gif" alt="wantteacherclass.gif" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:01:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535665#M147119</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-02-14T18:01:48Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535666#M147120</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data jan;
infile cards truncover;
input id className $ startdate  :ddmmyy10.       enddate :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A               01/01/2019
1   B               01/01/2019
2   A               01/01/2019
3   B               01/01/2019
;

data feb;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1       A               01/02/2019
2       A                01/02/2019
3       B                01/02/2019
;

data want ;
if _n_=1 then do;
   dcl hash H (dataset:'feb') ;
   h.definekey  ("id","classname") ;
   h.definedata ("startdate", "enddate") ;
   h.definedone () ;
end;
set jan;
if h.check()= 0 then do;
output;
h.find();
output;
end;
else do;
end_date=startdate;
output;
end;
format end_Date ddmmyy10.;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:03:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535666#M147120</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T18:03:02Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535667#M147121</link>
      <description>&lt;P&gt;In your sample data, it looks like both data sets are in sorted order by ID ClassName StartDate.&amp;nbsp; If that's the case:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set january (in=from_jan) february;
by id className startdate;
if last.className and from_jan then enddate = startdate;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:05:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535667#M147121</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2019-02-14T18:05:03Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535670#M147122</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data jan;
infile cards truncover;
input id className $ startdate  :ddmmyy10.       enddate :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A               01/01/2019
1   B               01/01/2019
2   A               01/01/2019
3   B               01/01/2019
;

data feb;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1       A               01/02/2019
2       A                01/02/2019
3       B                01/02/2019
;

proc sql;
create table want as
select id,classname, startdate,ifn(count(*)=1,startdate,.) as end_date format ddmmyy10.
from
(select * from jan
union 
select * from feb)
group by id,classname
order by id,classname, startdate;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:19:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535670#M147122</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T18:19:18Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535678#M147126</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data jan;
infile cards truncover;
input id className $ startdate  :ddmmyy10.       enddate :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A               01/01/2019
1   B               01/01/2019
2   A               01/01/2019
3   B               01/01/2019
;

data feb;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1       A               01/02/2019
2       A                01/02/2019
3       B                01/02/2019
;
data want;
set jan feb;
by id classname;
if first.classname and last.classname then endDate=startdate;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:23:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535678#M147126</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T18:23:27Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535683#M147128</link>
      <description>Thanks. This appears to be more efficient</description>
      <pubDate>Thu, 14 Feb 2019 18:29:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535683#M147128</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-14T18:29:05Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535684#M147129</link>
      <description>&lt;P&gt;No, I am afraid I made a mistake in not thinking forward from future month appends taking into account B could occur twice . You chose the right answer.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12887"&gt;@ErikLund_Jensen&lt;/a&gt;&amp;nbsp; 's solution covers a grand ETL solution&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:32:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535684#M147129</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T18:32:07Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535694#M147132</link>
      <description>I can see that this 'ifn(count(*)=1,startdate,.)' will not work if the teacher takes up the class again in future. Thanks &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12887"&gt;@ErikLund_Jensen&lt;/a&gt;</description>
      <pubDate>Thu, 14 Feb 2019 18:52:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535694#M147132</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-14T18:52:38Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535701#M147133</link>
      <description>&lt;P&gt;I tried to add a dataset for march and I'm not getting results.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 19:15:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535701#M147133</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-14T19:15:37Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535710#M147134</link>
      <description>I tried adding a march dataset and it didn't work for the following scenarios:&lt;BR /&gt;1. Teacher with id 1 starts taking class b by march&lt;BR /&gt;2.March dataset merged with 'January' and 'february'</description>
      <pubDate>Thu, 14 Feb 2019 19:18:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535710#M147134</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-14T19:18:17Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535724#M147140</link>
      <description>&lt;P&gt;Yes i know. Hence the reason i admitted I made a mistake. Just got back to my computer. Let me take a closer look&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 19:53:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535724#M147140</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T19:53:29Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535768#M147154</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/223111"&gt;@OLUGBOJI&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data jan;
infile cards truncover;
input id className $ startdate  :ddmmyy10.       enddate :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A               01/01/2019
1   B               01/01/2019
2   A               01/01/2019
3   B               01/01/2019
;

data feb;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1       A               01/02/2019
2       A                01/02/2019
3       B                01/02/2019
;

data mar;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A             01/03/2019
1   B               01/03/2019
3   B            01/03/2019
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*Look up Jan to feb*/
data jan_to_feb ;
if _n_=1 then do;
   dcl hash H (dataset:'feb',multidata:'y') ;/*replace subsequent months like march here*/
   h.definekey  ("id","classname") ;
   h.definedata ("startdate", "enddate") ;
   h.definedone () ;
   dcl hiter hh('h');
end;
set jan end=lr;/*jan is like your old full load*/
by id classname;
if last.classname then 
do;
	rc=h.check();
	if rc=0 then do;
		output;
		do rc= h.find() by 0 while(rc=0);
			output;
			rc=h.find_next();
		end;
		end;
	else do; enddate=startdate;output;end;
end;
else output;
drop rc;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;RESULTS:&lt;/P&gt;
&lt;PRE&gt;id className startdate enddate 
1 A 01/01/2019 . 
1 A 01/02/2019 . 
1 B 01/01/2019 01/01/2019 
2 A 01/01/2019 . 
2 A 01/02/2019 . 
3 B 01/01/2019 . 
3 B 01/02/2019 . 


&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Now moving to the 2nd look up the previous result with March&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*Look up Janfeb(the output of previous
to march*/
data jan_to_feb___to_mar ;
if _n_=1 then do;
   dcl hash H (dataset:'mar',multidata:'y') ;/*replace subsequent months like march here*/
   h.definekey  ("id","classname") ;
   h.definedata ("startdate", "enddate") ;
   h.definedone () ;
   dcl hiter hh('h');
end;
set jan_to_feb end=lr;/*jan_to_feb is like your old full load*/
by id classname;
if last.classname then 
do;
	rc=h.check();
	if rc=0 then do;
		output;
		do rc= h.find() by 0 while(rc=0);
			output;
			rc=h.find_next();
		end;
		end;
	else do; enddate=startdate;output;end;
end;
else output;
drop rc;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;RESULTS:&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;id className startdate enddate 
1 A 01/01/2019 . 
1 A 01/02/2019 . 
1 A 01/03/2019 . 
1 B 01/01/2019 01/01/2019 
1 B 01/03/2019 . 
2 A 01/01/2019 . 
2 A 01/02/2019 01/02/2019 
3 B 01/01/2019 . 
3 B 01/02/2019 . 
3 B 01/03/2019 . 

&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Feb 2019 22:51:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535768#M147154</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-02-14T22:51:11Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535824#M147176</link>
      <description>&lt;P&gt;Hi&amp;nbsp;OLUGBOJI&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My solution does not work if a teacher starts taking a class again, because the teacher is still active, so max(startdate) will be march. But what should happen? - It often happens to me that I give a solution to a specific SAS coding problem without solving the user's real problem, because I haven't got the overall picture.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You might get better help if you gave a short explanation of your intentions with the program. Marking the months where a teacher is not present in a given class, allocating same teacher to new classes if a course is finished, or??&lt;/P&gt;</description>
      <pubDate>Fri, 15 Feb 2019 10:26:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535824#M147176</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-02-15T10:26:09Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535842#M147183</link>
      <description>&lt;P&gt;Here's how I approached it:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC SQL;&lt;BR /&gt;CREATE TABLE WORK.QUERY_FOR_JAN AS &lt;BR /&gt;SELECT t1.id, &lt;BR /&gt;t1.className, &lt;BR /&gt;t1.startdate, &lt;BR /&gt;t2.id AS id1, &lt;BR /&gt;t2.className AS className1, &lt;BR /&gt;t2.startdate AS startdate1, &lt;BR /&gt;t3.id AS id2, &lt;BR /&gt;t3.className AS className2, &lt;BR /&gt;t3.startdate AS startdate2, &lt;BR /&gt;/* enddate */&lt;BR /&gt;(case when t2.startdate is missing then t1.startdate when t3.startdate is missing then t2.startdate end) &lt;BR /&gt;FORMAT=date9. AS enddate&lt;BR /&gt;FROM WORK.JAN t1&lt;BR /&gt;LEFT JOIN WORK.FEB t2 ON (t1.id = t2.id) AND (t1.className = t2.className)&lt;BR /&gt;LEFT JOIN WORK.MAR t3 ON (t2.id = t3.id) AND (t2.className = t3.className);&lt;BR /&gt;QUIT;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Feb 2019 13:04:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535842#M147183</guid>
      <dc:creator>tomrvincent</dc:creator>
      <dc:date>2019-02-15T13:04:59Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535863#M147193</link>
      <description>I'm sorry that I didn't make myself clear. Teachers might be making claims for classes they only taught in the past and thereby claim bonus payments. Bonus payment goes out every quarter. The intentions of the program is to verify the output against claims made by the teachers.</description>
      <pubDate>Fri, 15 Feb 2019 14:36:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535863#M147193</guid>
      <dc:creator>OLUGBOJI</dc:creator>
      <dc:date>2019-02-15T14:36:58Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535912#M147207</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/223111"&gt;@OLUGBOJI&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;
&lt;P&gt;If your purpose is to get an overview to verify claims, and you don't need the data for further processing, I think a report&amp;nbsp; is all you need, Proc Tabulate can do it direct from your input data without further data processing except for adding q quarter&amp;nbsp;variable to use as class variable in Proc Tabulate.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I added an extra month to data from the previous examples to have data for more than one quarter.&amp;nbsp;The tables have two sets of columns: Quarters with counts pr. quarter and Months as documentation for the counts:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data apr;
infile cards truncover;
input id    className $  startdate  :ddmmyy10.     enddate  :ddmmyy10. ;
format startdate  ddmmyy10.       enddate ddmmyy10. ;
cards;
1   A             01/04/2019
1   B               01/04/2019
4   B            01/04/2019
;

data all; set jan feb mar apr;
	Quarter = put(startdate,yyqd.);
run;

proc tabulate data=all;
	class id classname Quarter startdate;
	format startdate yymmd8.;
	label startdate = 'Month';
	keylabel N=' ' all=' ';
	table id*classname,Quarter all *startdate /box = 'Teacher by class' rts=20;
	table id,Quarter all *startdate  /box = 'Teacher total' rts=20;;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Proc tabulate writes 2 tables:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="teachers.gif" style="width: 474px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/27176i83211682745A46BB/image-size/large?v=v2&amp;amp;px=999" role="button" title="teachers.gif" alt="teachers.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Feb 2019 17:04:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535912#M147207</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-02-15T17:04:42Z</dc:date>
    </item>
    <item>
      <title>Re: Updating column in merged dataset based on comparison with old dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535915#M147209</link>
      <description>&lt;P&gt;Sorry - The tables were not made from april data as shown,because ID 4 had start in March. This is made from correct input:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="teachers.gif" style="width: 470px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/27177i6F2BE280600D7A0E/image-size/large?v=v2&amp;amp;px=999" role="button" title="teachers.gif" alt="teachers.gif" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Feb 2019 17:10:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Updating-column-in-merged-dataset-based-on-comparison-with-old/m-p/535915#M147209</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-02-15T17:10:12Z</dc:date>
    </item>
  </channel>
</rss>

