<?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: Adding incremental rows based on start date and end date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825379#M326024</link>
    <description>&lt;P&gt;AS&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;asked, you haven't said what you want when opendate=closedate and indicator=0.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Absent that howerver:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   input Id	OpenDate :anydtdte.	CloseDate :anydtdte. Indicator;
   format opendate closedate monyy6.;
datalines;
123	Apr-22	Jun-22	0
456	Apr-22	Apr-22	0
789	Apr-22	Apr-22	1
run;

data want;
  set have;
  do datecounter=opendate by 0 while (datecounter&amp;lt;=ifn(indicator=1 and opendate=closedate,today(),closedate));
    output;
    datecounter=intnx('month',datecounter,1);
  end;
  format datecounter date9. ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 26 Jul 2022 02:16:51 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2022-07-26T02:16:51Z</dc:date>
    <item>
      <title>Adding incremental rows based on start date and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825372#M326018</link>
      <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to add rows based on 2 conditions.&lt;/P&gt;&lt;P&gt;data have-&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Id&lt;/TD&gt;&lt;TD&gt;Open Date&lt;/TD&gt;&lt;TD&gt;Close Date&lt;/TD&gt;&lt;TD&gt;Indicator&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here add rows from open date to close date when Open date &amp;lt; Close date. Another condition when Open date = Close date and Indicator = 1 then add rows till today.&lt;/P&gt;&lt;P&gt;Data want -&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Id&lt;/TD&gt;&lt;TD&gt;Open Date&lt;/TD&gt;&lt;TD&gt;Close Date&lt;/TD&gt;&lt;TD&gt;Indicator&lt;/TD&gt;&lt;TD&gt;Datecounter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;May-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;May-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Jun-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;Apr-22&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Jul-22&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jul 2022 22:53:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825372#M326018</guid>
      <dc:creator>Vidhee</dc:creator>
      <dc:date>2022-07-25T22:53:20Z</dc:date>
    </item>
    <item>
      <title>Re: Adding incremental rows based on start date and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825373#M326019</link>
      <description>&lt;P&gt;UNTESTED CODE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    if indicator=0 then n_months=intck('month',opendate,closedate);
    else if indicator=1 then n_months=intck('month',opendate,today());
    do i=0 to n_months;
         datecounter=intnx('month',opendate,i,'b');
         output;
    end;
    format datecounter monyy7.;
    drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want tested code, do not provide data as screen captures or Excel files. Data must be provided as &lt;FONT color="#FF0000"&gt;working&lt;/FONT&gt; SAS data step code, and not in any other format — please test the code to make sure it works before posting it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, the above code assumes that opendate and closedate are actual numeric SAS date values, which you did not say they were, and is another reason why the code is untested.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jul 2022 23:33:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825373#M326019</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2022-07-25T23:33:57Z</dc:date>
    </item>
    <item>
      <title>Re: Adding incremental rows based on start date and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825374#M326020</link>
      <description>&lt;P&gt;Are your "dates" actually SAS date values or just character values impersonating dates?&lt;/P&gt;
&lt;P&gt;You provide instructions for Open date= Close date &lt;STRONG&gt;AND &lt;/STRONG&gt;indicator=1. What about Open date=Close date and Indicator = 0 (or missing)? When you start writing exceptions you should be very clear to state them. Listing an example is not always sufficient.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My take:&lt;/P&gt;
&lt;PRE&gt;data have;
   input Id	OpenDate :anydtdte.	CloseDate :anydtdte. Indicator;
   format opendate closedate monyy6.;
datalines;
123	Apr-22	Jun-22	0
456	Apr-22	Apr-22	0
789	Apr-22	Apr-22	1
;

data want;
   set have;
   datecounter=opendate;
   if indicator ne 1 then do;
      do until (datecounter gt closedate);
         output;
         datecounter = intnx('month',datecounter,1);
      end;
   end;
   else if opendate=closedate then do until (datecounter gt today());
         output;
         datecounter = intnx('month',datecounter,1);
   end;

   format datecounter monyy6.;
run;&lt;/PRE&gt;
&lt;P&gt;Personally I believe anyone actually using 2-digit years deserves what eventually comes to them. Look up Y2K.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/341366"&gt;@Vidhee&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to add rows based on 2 conditions.&lt;/P&gt;
&lt;P&gt;data have-&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Id&lt;/TD&gt;
&lt;TD&gt;Open Date&lt;/TD&gt;
&lt;TD&gt;Close Date&lt;/TD&gt;
&lt;TD&gt;Indicator&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;789&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here add rows from open date to close date when Open date &amp;lt; Close date. Another condition when Open date = Close date and Indicator = 1 then add rows till today.&lt;/P&gt;
&lt;P&gt;Data want -&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Id&lt;/TD&gt;
&lt;TD&gt;Open Date&lt;/TD&gt;
&lt;TD&gt;Close Date&lt;/TD&gt;
&lt;TD&gt;Indicator&lt;/TD&gt;
&lt;TD&gt;Datecounter&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;May-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;123&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;456&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;789&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;789&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;May-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;789&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jun-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;789&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;Apr-22&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jul-22&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&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;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 25 Jul 2022 23:39:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825374#M326020</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-07-25T23:39:22Z</dc:date>
    </item>
    <item>
      <title>Re: Adding incremental rows based on start date and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825379#M326024</link>
      <description>&lt;P&gt;AS&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;asked, you haven't said what you want when opendate=closedate and indicator=0.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Absent that howerver:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   input Id	OpenDate :anydtdte.	CloseDate :anydtdte. Indicator;
   format opendate closedate monyy6.;
datalines;
123	Apr-22	Jun-22	0
456	Apr-22	Apr-22	0
789	Apr-22	Apr-22	1
run;

data want;
  set have;
  do datecounter=opendate by 0 while (datecounter&amp;lt;=ifn(indicator=1 and opendate=closedate,today(),closedate));
    output;
    datecounter=intnx('month',datecounter,1);
  end;
  format datecounter date9. ;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Jul 2022 02:16:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825379#M326024</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2022-07-26T02:16:51Z</dc:date>
    </item>
    <item>
      <title>Re: Adding incremental rows based on start date and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825420#M326045</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs;
input Id OpenDate :monyy7. CloseDate :monyy7. Indicator;
format OpenDate CloseDate monyy7.;
cards;
123 Apr-22 Jun-22 0
456 Apr-22 Apr-22 0
789 Apr-22 Apr-22 1
;

data want;
 set have;
 do date=OpenDate to CloseDate;
   if month ne month(date) then output;
   month=month(date);
 end;

 if Indicator=1 and OpenDate=CloseDate then do;
   do date=OpenDate to date();
     if month ne month(date) then output;
     month=month(date);
   end;
 end;
 format date monyy7.;
 drop month;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 26 Jul 2022 12:28:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Adding-incremental-rows-based-on-start-date-and-end-date/m-p/825420#M326045</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-07-26T12:28:58Z</dc:date>
    </item>
  </channel>
</rss>

