<?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 Using a DO Loop to create new date with first. last. logic in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628083#M185529</link>
    <description>&lt;P&gt;Hello SAS users!&lt;/P&gt;&lt;P&gt;I am trying to get a MIN and MAX date onto my data to enable the &amp;nbsp;creation of&amp;nbsp;&amp;nbsp;a single record when I roll this up by CLM_NUM.&amp;nbsp; What I want is the earliest&amp;nbsp;FST_SRVC_DT and the latest LST_SRVC_DT on all claim lines for a given CLM_NUM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I want it to look like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CLM_NUM&lt;/TD&gt;&lt;TD&gt;FST_SRVC_DT&lt;/TD&gt;&lt;TD&gt;LST_SRVC_DT&lt;/TD&gt;&lt;TD&gt;IP_START&lt;/TD&gt;&lt;TD&gt;IP_END&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#0000ff"&gt;&lt;STRONG&gt;22Dec2018&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;24Dec2018&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;25Dec2018&lt;/TD&gt;&lt;TD&gt;29Dec2018&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;30Dec2018&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#3366ff"&gt;31Dec2018&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data is previously sorted by CLM_NUM - what am I doing wrong?&amp;nbsp; I end up with only the last record looking like I want it to.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#000080"&gt;&lt;STRONG&gt;DATA&lt;/STRONG&gt;&lt;/FONT&gt; WORK.want;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;SET&lt;/FONT&gt; WORK.have; &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;BY&lt;/FONT&gt; CLM_NUM;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;IF&lt;/FONT&gt; FIRST.CLM_NUM&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;THEN&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;DO&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; IP_START = FST_SRVC_DT;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;END&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;ELSE&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;IF&lt;/FONT&gt; LAST.CLM_NUM&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;THEN&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;DO&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;&amp;nbsp; IP_END = LST_SRVC_DT;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;END&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;RETAIN&lt;/FONT&gt; IP_START IP_END;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;format&lt;/FONT&gt; IP_START &lt;FONT color="#008080"&gt;MMDDYY10.&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;format&lt;/FONT&gt; IP_END &lt;FONT color="#008080"&gt;MMDDYY10.&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;IP_START = MIN(IP_START,FST_SRVC_DT);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;IP_END = MAX(IP_END,LST_SRVC_DT);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#000080"&gt;&lt;STRONG&gt;RUN&lt;/STRONG&gt;&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 28 Feb 2020 01:20:08 GMT</pubDate>
    <dc:creator>kbinan</dc:creator>
    <dc:date>2020-02-28T01:20:08Z</dc:date>
    <item>
      <title>Using a DO Loop to create new date with first. last. logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628083#M185529</link>
      <description>&lt;P&gt;Hello SAS users!&lt;/P&gt;&lt;P&gt;I am trying to get a MIN and MAX date onto my data to enable the &amp;nbsp;creation of&amp;nbsp;&amp;nbsp;a single record when I roll this up by CLM_NUM.&amp;nbsp; What I want is the earliest&amp;nbsp;FST_SRVC_DT and the latest LST_SRVC_DT on all claim lines for a given CLM_NUM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I want it to look like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CLM_NUM&lt;/TD&gt;&lt;TD&gt;FST_SRVC_DT&lt;/TD&gt;&lt;TD&gt;LST_SRVC_DT&lt;/TD&gt;&lt;TD&gt;IP_START&lt;/TD&gt;&lt;TD&gt;IP_END&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#0000ff"&gt;&lt;STRONG&gt;22Dec2018&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;24Dec2018&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;25Dec2018&lt;/TD&gt;&lt;TD&gt;29Dec2018&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;756653xxXXX&lt;/TD&gt;&lt;TD&gt;30Dec2018&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;FONT color="#3366ff"&gt;31Dec2018&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;12/22/2018&lt;/TD&gt;&lt;TD&gt;12/31/2018&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data is previously sorted by CLM_NUM - what am I doing wrong?&amp;nbsp; I end up with only the last record looking like I want it to.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#000080"&gt;&lt;STRONG&gt;DATA&lt;/STRONG&gt;&lt;/FONT&gt; WORK.want;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;SET&lt;/FONT&gt; WORK.have; &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;BY&lt;/FONT&gt; CLM_NUM;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;IF&lt;/FONT&gt; FIRST.CLM_NUM&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;THEN&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;DO&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; IP_START = FST_SRVC_DT;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;END&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;ELSE&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;IF&lt;/FONT&gt; LAST.CLM_NUM&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;THEN&lt;/FONT&gt; &lt;FONT color="#0000ff"&gt;DO&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;&amp;nbsp; IP_END = LST_SRVC_DT;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;END&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;RETAIN&lt;/FONT&gt; IP_START IP_END;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;format&lt;/FONT&gt; IP_START &lt;FONT color="#008080"&gt;MMDDYY10.&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#0000ff"&gt;format&lt;/FONT&gt; IP_END &lt;FONT color="#008080"&gt;MMDDYY10.&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;IP_START = MIN(IP_START,FST_SRVC_DT);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;IP_END = MAX(IP_END,LST_SRVC_DT);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier" size="2"&gt;&lt;FONT color="#000080"&gt;&lt;STRONG&gt;RUN&lt;/STRONG&gt;&lt;/FONT&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 Feb 2020 01:20:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628083#M185529</guid>
      <dc:creator>kbinan</dc:creator>
      <dc:date>2020-02-28T01:20:08Z</dc:date>
    </item>
    <item>
      <title>Re: Using a DO Loop to create new date with first. last. logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628085#M185530</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
input CLM_NUM :$15.	(FST_SRVC_DT	LST_SRVC_DT) (:date9.);*	IP_START	IP_END ;
format 	FST_SRVC_DT	LST_SRVC_DT date9.;
cards;
756653xxXXX	22Dec2018	24Dec2018	12/22/2018	12/31/2018
756653xxXXX	25Dec2018	29Dec2018	12/22/2018	12/31/2018
756653xxXXX	30Dec2018	31Dec2018	12/22/2018	12/31/2018 
;

/*Datastep*/

data want;
 do _n_=1 by 1 until(last.CLM_NUM);
  set have;
  by CLM_NUM;
  IP_START=min(IP_START, FST_SRVC_DT);
  IP_END=max( IP_END,LST_SRVC_DT);
 end;
 do _n_=1 to _n_;
  set have;
  output;
 end;
 format  IP_START IP_END date9.;
run;

 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 28 Feb 2020 01:31:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628085#M185530</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-02-28T01:31:33Z</dc:date>
    </item>
    <item>
      <title>Re: Using a DO Loop to create new date with first. last. logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628086#M185531</link>
      <description>&lt;P&gt;@&lt;A href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205" target="_self"&gt;&lt;SPAN class="login-bold"&gt;novinosrin&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;THANK YOU SO MUCH!&amp;nbsp; That worked perfectly!&lt;/P&gt;</description>
      <pubDate>Fri, 28 Feb 2020 01:40:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628086#M185531</guid>
      <dc:creator>kbinan</dc:creator>
      <dc:date>2020-02-28T01:40:37Z</dc:date>
    </item>
    <item>
      <title>Re: Using a DO Loop to create new date with first. last. logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628087#M185532</link>
      <description>&lt;P&gt;On the other hand, Proc SQL autoremerge is very convenient&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
input CLM_NUM :$15.	(FST_SRVC_DT	LST_SRVC_DT) (:date9.);*	IP_START	IP_END ;
format 	FST_SRVC_DT	LST_SRVC_DT date9.;
cards;
756653xxXXX	22Dec2018	24Dec2018	12/22/2018	12/31/2018
756653xxXXX	25Dec2018	29Dec2018	12/22/2018	12/31/2018
756653xxXXX	30Dec2018	31Dec2018	12/22/2018	12/31/2018 
;
/*Proc SQL*/

proc sql;
create table want as
select * ,min( FST_SRVC_DT) as 	IP_START format=date9.,max(	LST_SRVC_DT) as IP_END format=date9.
from have
group by CLM_NUM
order by CLM_NUM, FST_SRVC_DT;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 28 Feb 2020 01:44:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Using-a-DO-Loop-to-create-new-date-with-first-last-logic/m-p/628087#M185532</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-02-28T01:44:09Z</dc:date>
    </item>
  </channel>
</rss>

