<?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: keep max date or empty in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524367#M4773</link>
    <description>&lt;P&gt;thanks for replying however for this data point i dont want the max start date i want the date with empty end date&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;VOR	  &lt;SPAN class="token number"&gt;4&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;APR2016:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;
VOR	  &lt;SPAN class="token number"&gt;4&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;OCT2018:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;31&lt;/SPAN&gt;OCT2018:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;and you code i picking the max start date&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 03 Jan 2019 19:34:51 GMT</pubDate>
    <dc:creator>hk2013</dc:creator>
    <dc:date>2019-01-03T19:34:51Z</dc:date>
    <item>
      <title>keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524349#M4770</link>
      <description>&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Start_date&lt;/TD&gt;&lt;TD&gt;End_date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TPSON&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01MAY2017:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TPSON&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01MAR2016:00:00:00&lt;/TD&gt;&lt;TD&gt;31DEC2016:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TPSON&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;14NOV2014:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RED&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01MAY2015:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RED&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01DEC2005:00:00:00&lt;/TD&gt;&lt;TD&gt;30APR2015:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RICH&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;01NOV2018:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RICH&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;01JAN2018:00:00:00&lt;/TD&gt;&lt;TD&gt;31DEC2018:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VOR&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01APR2016:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VOR&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01OCT2018:00:00:00&lt;/TD&gt;&lt;TD&gt;31OCT2018:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Fan&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;07JUL2007:00:00:00&lt;/TD&gt;&lt;TD&gt;19OCT2015:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VIX&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20AUG2018:00:00:00&lt;/TD&gt;&lt;TD&gt;31DEC2018:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;I have the data set above where members have&amp;nbsp; dates associated to them. members with multiple dates i want to keep the max start_date and the&amp;nbsp; end_date that is empty and also keep the members with both start and end date&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;output:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Start_date&lt;/TD&gt;&lt;TD&gt;End_date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;TPSON&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01MAY2017:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RED&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;01MAY2015:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RICH&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;01NOV2018:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VOR&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;01APR2016:00:00:00&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Fan&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;07JUL2007:00:00:00&lt;/TD&gt;&lt;TD&gt;19OCT2015:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VIX&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;20AUG2018:00:00:00&lt;/TD&gt;&lt;TD&gt;31DEC2018:00:00:00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 03 Jan 2019 19:00:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524349#M4770</guid>
      <dc:creator>hk2013</dc:creator>
      <dc:date>2019-01-03T19:00:02Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524362#M4771</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data have;
Input Name $ ID Start_date:	datetime26.	End_date: datetime26.;
format Start_date End_date datetime26.;
cards;
TPSON 1 01MAY2017:00:00:00 .
TPSON 1 01MAR2016:00:00:00 31DEC2016:00:00:00
TPSON 1 14NOV2014:00:00:00 .
RED   2 01MAY2015:00:00:00 .
RED	  2 01DEC2005:00:00:00 30APR2015:00:00:00
RICH  3 01NOV2018:00:00:00 .
RICH  3 01JAN2018:00:00:00 31DEC2018:00:00:00
VOR	  4 01APR2016:00:00:00 .
VOR	  4 01OCT2018:00:00:00 31OCT2018:00:00:00
Fan   5 07JUL2007:00:00:00 19OCT2015:00:00:00
VIX	  6 20AUG2018:00:00:00 31DEC2018:00:00:00
run;

Proc sort data=have ;
	by ID   descending Start_date  End_date;
run;
Data want;
	set have;
	by ID;

	if first.id;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Jan 2019 19:18:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524362#M4771</guid>
      <dc:creator>r_behata</dc:creator>
      <dc:date>2019-01-03T19:18:52Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524365#M4772</link>
      <description>&lt;P&gt;Assuming i understand your requirement--&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Name $	ID	Start_date :datetime20.	End_date :datetime20.;
format start_date end_Date datetime20.;
cards;
TPSON	1	01MAY2017:00:00:00	.
TPSON	1	01MAR2016:00:00:00	31DEC2016:00:00:00
TPSON	1	14NOV2014:00:00:00	.
RED	2	01MAY2015:00:00:00	.
RED	2	01DEC2005:00:00:00	30APR2015:00:00:00
RICH	3	01NOV2018:00:00:00	.
RICH	3	01JAN2018:00:00:00	31DEC2018:00:00:00
VOR	4	01APR2016:00:00:00	.
VOR	4	01OCT2018:00:00:00	31OCT2018:00:00:00
Fan 	5	07JUL2007:00:00:00	19OCT2015:00:00:00
VIX	6	20AUG2018:00:00:00	31DEC2018:00:00:00
;

proc sql;
create table want as
select *
from
(select Name,id, case when start_date=max(start_date) and end_date=. then start_date
		when start_date=max(start_date) and end_date&amp;gt;. and count(*)&amp;gt;1 then .
		else start_date
		end as start_date format=datetime20.,end_date
from have
group by id,name)
group by id,name
having start_date=max(start_date)
order by id,name;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Jan 2019 19:30:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524365#M4772</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-01-03T19:30:52Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524367#M4773</link>
      <description>&lt;P&gt;thanks for replying however for this data point i dont want the max start date i want the date with empty end date&amp;nbsp;&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;VOR	  &lt;SPAN class="token number"&gt;4&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;APR2016:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;
VOR	  &lt;SPAN class="token number"&gt;4&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;OCT2018:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;31&lt;/SPAN&gt;OCT2018:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;:&lt;SPAN class="token number"&gt;00&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;and you code i picking the max start date&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jan 2019 19:34:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524367#M4773</guid>
      <dc:creator>hk2013</dc:creator>
      <dc:date>2019-01-03T19:34:51Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524368#M4774</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/169082"&gt;@hk2013&lt;/a&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;The proc sql approach I gave you should work and the reason I took that approach was I noticed&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/223452"&gt;@r_behata&lt;/a&gt;&amp;nbsp;had already responded with a datastep, to have some distinction. If you are not comfortable with proc sql, and want only datastep, let us know&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;EDIT: Also, Please clarify, should the maxdate of startdate record had non missing enddate, is it ok to&amp;nbsp; assume the next maxdate would have a missing enddate as your sample suggests? If not, the logic would have to scan until it finds a record with end_Date=. and the highest record of startdate?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Either way, with this clarification, the coding is less than a minute work&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jan 2019 19:49:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524368#M4774</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-01-03T19:49:21Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524374#M4775</link>
      <description>&lt;P&gt;This is much simpler to understand in my opinion&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input Name $	ID	Start_date :datetime20.	End_date :datetime20.;
format start_date end_Date datetime20.;
cards;
TPSON	1	01MAY2017:00:00:00	.
TPSON	1	01MAR2016:00:00:00	31DEC2016:00:00:00
TPSON	1	14NOV2014:00:00:00	.
RED	2	01MAY2015:00:00:00	.
RED	2	01DEC2005:00:00:00	30APR2015:00:00:00
RICH	3	01NOV2018:00:00:00	.
RICH	3	01JAN2018:00:00:00	31DEC2018:00:00:00
VOR	4	01APR2016:00:00:00	.
VOR	4	01OCT2018:00:00:00	31OCT2018:00:00:00
Fan 	5	07JUL2007:00:00:00	19OCT2015:00:00:00
VIX	6	20AUG2018:00:00:00	31DEC2018:00:00:00
;

proc sql;
create table want as
select *
from have
where end_date=.
group by id
having max(start_date)=start_date
union all
select *
from have 
where id not in (select id from have where end_date=.)
group by id
having max(start_date)=start_date
order by id;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Jan 2019 20:14:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524374#M4775</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-01-03T20:14:21Z</dc:date>
    </item>
    <item>
      <title>Re: keep max date or empty</title>
      <link>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524389#M4778</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input Name $	ID	Start_date :datetime20.	End_date :datetime20.;
format start_date end_Date datetime20.;
cards;
TPSON	1	01MAY2017:00:00:00	.
TPSON	1	01MAR2016:00:00:00	31DEC2016:00:00:00
TPSON	1	14NOV2014:00:00:00	.
RED	2	01MAY2015:00:00:00	.
RED	2	01DEC2005:00:00:00	30APR2015:00:00:00
RICH	3	01NOV2018:00:00:00	.
RICH	3	01JAN2018:00:00:00	31DEC2018:00:00:00
VOR	4	01APR2016:00:00:00	.
VOR	4	01OCT2018:00:00:00	31OCT2018:00:00:00
Fan 	5	07JUL2007:00:00:00	19OCT2015:00:00:00
VIX	6	20AUG2018:00:00:00	31DEC2018:00:00:00
;
proc sort data=have out=_have;
by id end_date  descending Start_date ;
run;

data want;
do until(last.id);
merge _have(in=a) _have(drop=start_date where=(_End_date=.) rename=(End_date=_End_date) in=b);
by id;
if a and not b then _m=max(_m,Start_date);
end;
do until(last.id);
set _have;
by id;
if first.id and end_date=. or _m=start_date then output;
end;
drop _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 03 Jan 2019 21:59:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/keep-max-date-or-empty/m-p/524389#M4778</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-01-03T21:59:04Z</dc:date>
    </item>
  </channel>
</rss>

