<?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: Not so simple time-line processing in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308252#M66121</link>
    <description>&lt;P&gt;Thanks &amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/88384"&gt;@Shmuel﻿&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp﻿&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It should have been obvious (to me) that the obvious solution just needed to break down the data to individual days.&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/18408"&gt;@Ksharp﻿&lt;/a&gt;&amp;nbsp;I appreciate the effort you put into your solution, so you have to get the Accepted Solution. (Glad you enjoyed the challange&amp;nbsp;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt; )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I figured though, that I could assume the latest start_date takes precedence so could manage with a slightly simpler solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again everyone.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input start_date : date9. end : $20.   position    employee ;
if upcase(end)='31-DEC-99' then end_date=today();
else end_date=input(end,date9.);
drop end;
format start_date  end_date date9.;
cards;
1-Sep-15    31-Dec-99   348 574               
21-Mar-16   6-Jun-16    348 635               
1-Aug-13    31-Dec-99   554 963               
21-Jul-14   8-Jul-16    554 580               
2-Nov-15    27-Nov-15   554 78                
3-Sep-14    4-Apr-15    742 830               
9-Apr-15    28-Apr-15   742 830               
21-May-15   24-Jun-15   742 38                
11-Jun-15   31-Dec-99   742 313               
23-Nov-15   11-Dec-15   751 44                
12-Dec-15   31-Dec-99   751 125               
8-Apr-16    22-Apr-16   751 44                
10-Mar-16   23-Mar-16   231 67                
24-Mar-16   6-Apr-16    231 723               
7-Apr-16    31-Dec-99   231 32                 
7-Apr-16    20-Apr-16   231 839
;
run;
data temp;
set have;
do date=start_date to end_date;
  output;
end;
keep  position  date  employee start_date end_date;
format date date9.;
run;
proc sort ;
   by position date descending start_date end_date;
run; 

data temp2;
   set temp;
   by position date descending start_date ;
   if first.date;
run;
 
data want;
  keep position start_dt end_dt emp;
  set temp2;
  by position  ;
  retain position emp last_emp last_date start_dt end_dt;
  format start_dt end_dt date9.;
  if first.position then
    do;
     last_emp = employee;
     start_dt= date;
     last_date = date;
     if last.position then
       do;
        emp = employee;
        end_dt = date;
        output;
       end;
     else
       return; 
     end;
 
  if employee = last_emp  and  date = last_date+1 then
     last_date = date;
  else
    link output_rec;
 
  if last.position then
     link output_rec;
return;
 
output_rec:
     emp = last_emp;
     end_dt = last_date;
     output;
     last_emp = employee;
     last_date = date;
     start_dt = date;
return;
 
run;
 &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 31 Oct 2016 12:13:33 GMT</pubDate>
    <dc:creator>Atester</dc:creator>
    <dc:date>2016-10-31T12:13:33Z</dc:date>
    <item>
      <title>Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308106#M66067</link>
      <description>&lt;P&gt;To the clever SAS users of the world, I need your help. The solution might come to me on Monday but nothing was coming to mind by the end of a long week.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My problem: I have HR data with records showing an employees’ duration in a given position.&amp;nbsp; Typically a person is assigned the role for a long or indefinite period, but when the person is away, another employee might be assigned the position for a short period.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="637"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="76"&gt;HAVE:&lt;/TD&gt;
&lt;TD width="77"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="63"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="71"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="80"&gt;WANT:&lt;/TD&gt;
&lt;TD width="77"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="57"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="68"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;start_date&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;end_date&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;position&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD colspan="2"&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;employee&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;start_date&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;end_date&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;position&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;employee&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;1-Sep-14&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;348&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;574&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;1-Sep-14&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;20-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;348&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;574&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;6-Jun-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;348&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;635&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;6-Jun-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;348&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;635&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;7-Jun-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;348&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;574&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;1-Aug-13&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;963&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;1-Aug-13&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;20-Jul-14&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;963&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-Jul-14&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;8-Jul-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;580&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-Jul-14&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;1-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;580&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;2-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;27-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;78&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;2-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;27-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;78&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;28-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;8-Jul-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;580&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;9-Jul-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;554&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;963&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;3-Sep-09&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;4-Apr-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;830&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;3-Sep-09&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;4-Apr-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;830&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-May-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;24-Jun-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;38&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-May-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;10-Jun-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;38&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;11-Jun-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;313&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;11-Jun-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;742&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;313&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;23-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;11-Dec-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;44&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;23-Nov-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;11-Dec-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;44&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;12-Dec-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;125&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;12-Dec-15&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;7-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;125&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;8-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;22-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;44&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;8-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;22-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;44&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;23-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;751&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;125&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;10-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;23-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;67&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;10-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;23-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;67&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;24-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;6-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;723&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;24-Mar-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;6-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;723&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;7-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;32&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;7-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;20-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;839&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;7-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;20-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;839&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;21-Apr-16&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;31-Dec-99&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;231&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;FONT size="1 2 3 4 5 6 7"&gt;32&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to convert these overlapping records into a single time series so it’s clear who was/is in a position on a given date.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The situations can become complicated. &amp;nbsp;And ambiguous. &amp;nbsp;The example data illustrates the appropriate assumptions. &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I didn't think it would be that difficult but&amp;nbsp;I soon realised&amp;nbsp;first. last. processing probably won't do. &amp;nbsp;Using the LAG function looked impractical, and dangerous, when mixed with too many IF-THEN-ELSE statements. &amp;nbsp;Look-ahead processing with extra SET statements might be the way. &amp;nbsp;And maybe&amp;nbsp;a little array processing could be handy. &amp;nbsp;Perhaps Proc FCMP and a recursive routine. &amp;nbsp;I can even imagine&amp;nbsp;a SQL solution - from an&amp;nbsp;SQL guru.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is anyone up to the challange? &amp;nbsp;I'm taking a break.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;TIA&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2016 01:23:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308106#M66067</guid>
      <dc:creator>Atester</dc:creator>
      <dc:date>2016-10-30T01:23:23Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308119#M66070</link>
      <description>&lt;P&gt;Treat it as medicine cabinet problem.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Take each record and create a record for every day.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Later employees take priority, when duplicated.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then use first/last to create your want dataset.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2016 04:31:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308119#M66070</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-10-30T04:31:38Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308123#M66071</link>
      <description>&lt;P&gt;A remark to&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;'s answer - &amp;nbsp;you'll need to sort derived data&amp;nbsp;&lt;/P&gt;
&lt;P&gt;by: &lt;STRONG&gt;&amp;nbsp;position start_date&lt;/STRONG&gt; &amp;nbsp;before selecting the &lt;STRONG&gt;last.start_date&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Oct 2016 06:30:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308123#M66071</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-10-30T06:30:30Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308129#M66073</link>
      <description>&lt;PRE&gt;
That is really not easy. There are too many scenarios you need to consider about.
I listed all the scenarios, you need to pick up which one you should keep.
I love this question.
NOTE: I convert 31-Dec-99 into today() , you can convert it back if you need to.




data have;
input start_date : date9. end : $20.   position    employee ;
if upcase(end)='31-DEC-99' then end_date=today();
 else end_date=input(end,date9.);
drop end;
format start_date  end_date date9.;
cards;
1-Sep-14    31-Dec-99   348 574                
21-Mar-16   6-Jun-16    348 635                
1-Aug-13    31-Dec-99   554 963                
21-Jul-14   8-Jul-16    554 580                
2-Nov-15    27-Nov-15   554 78                 
3-Sep-09    4-Apr-15    742 830                
21-May-15   24-Jun-15   742 38                 
11-Jun-15   31-Dec-99   742 313                
23-Nov-15   11-Dec-15   751 44                 
12-Dec-15   31-Dec-99   751 125                
8-Apr-16    22-Apr-16   751 44                 
10-Mar-16   23-Mar-16   231 67                 
24-Mar-16   6-Apr-16    231 723                
7-Apr-16    31-Dec-99   231 32                 
7-Apr-16    20-Apr-16   231 839
;
run;
data temp;
 set have;
 do date=start_date to end_date;
  output;
 end;
 keep date position    employee;
 format date date9.;
run;
proc freq data=have noprint;
 tables employee/out=employee(keep=employee);
run;
data _null_;
 set employee end=last;
 if _n_=1 then call execute('data all;merge ');
 call execute(catt('temp(where=(emp_',employee,'=',employee,
 ') rename=(employee=emp_',employee,'))'));
 if last then call execute(';by position date;run;');
run;

proc transpose data=all(keep=emp_: obs=0) out=vname;
run;
options missing=' ';
data _null_;
 set vname end=last;
 if _n_=1 then 
 call execute('data all;length employees $ 20000;retain employees;set all;if '); 
 call execute(catt(_name_,' ne lag(',_name_,')'));
 if last then 
 call execute(' then do;group+1;employees=catx("|",of emp_:);end;run;');
  else call execute(' or ');
run;
data want;
 set all;
 by group;
 retain start_date;
 if first.group then start_date=date;
 if last.group then do;
  end_date=date;output;
 end;
 format start_date end_date date9.;
 drop emp_: date;
run;

proc print data=want noobs;
run;
  

&lt;/PRE&gt;</description>
      <pubDate>Sun, 30 Oct 2016 07:47:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308129#M66073</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-10-30T07:47:30Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308252#M66121</link>
      <description>&lt;P&gt;Thanks &amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/88384"&gt;@Shmuel﻿&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp﻿&lt;/a&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It should have been obvious (to me) that the obvious solution just needed to break down the data to individual days.&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/18408"&gt;@Ksharp﻿&lt;/a&gt;&amp;nbsp;I appreciate the effort you put into your solution, so you have to get the Accepted Solution. (Glad you enjoyed the challange&amp;nbsp;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt; )&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I figured though, that I could assume the latest start_date takes precedence so could manage with a slightly simpler solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again everyone.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input start_date : date9. end : $20.   position    employee ;
if upcase(end)='31-DEC-99' then end_date=today();
else end_date=input(end,date9.);
drop end;
format start_date  end_date date9.;
cards;
1-Sep-15    31-Dec-99   348 574               
21-Mar-16   6-Jun-16    348 635               
1-Aug-13    31-Dec-99   554 963               
21-Jul-14   8-Jul-16    554 580               
2-Nov-15    27-Nov-15   554 78                
3-Sep-14    4-Apr-15    742 830               
9-Apr-15    28-Apr-15   742 830               
21-May-15   24-Jun-15   742 38                
11-Jun-15   31-Dec-99   742 313               
23-Nov-15   11-Dec-15   751 44                
12-Dec-15   31-Dec-99   751 125               
8-Apr-16    22-Apr-16   751 44                
10-Mar-16   23-Mar-16   231 67                
24-Mar-16   6-Apr-16    231 723               
7-Apr-16    31-Dec-99   231 32                 
7-Apr-16    20-Apr-16   231 839
;
run;
data temp;
set have;
do date=start_date to end_date;
  output;
end;
keep  position  date  employee start_date end_date;
format date date9.;
run;
proc sort ;
   by position date descending start_date end_date;
run; 

data temp2;
   set temp;
   by position date descending start_date ;
   if first.date;
run;
 
data want;
  keep position start_dt end_dt emp;
  set temp2;
  by position  ;
  retain position emp last_emp last_date start_dt end_dt;
  format start_dt end_dt date9.;
  if first.position then
    do;
     last_emp = employee;
     start_dt= date;
     last_date = date;
     if last.position then
       do;
        emp = employee;
        end_dt = date;
        output;
       end;
     else
       return; 
     end;
 
  if employee = last_emp  and  date = last_date+1 then
     last_date = date;
  else
    link output_rec;
 
  if last.position then
     link output_rec;
return;
 
output_rec:
     emp = last_emp;
     end_dt = last_date;
     output;
     last_emp = employee;
     last_date = date;
     start_dt = date;
return;
 
run;
 &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 31 Oct 2016 12:13:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308252#M66121</guid>
      <dc:creator>Atester</dc:creator>
      <dc:date>2016-10-31T12:13:33Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308357#M66166</link>
      <description>&lt;P&gt;Just to display an alternative checked code, &lt;U&gt;maybe easier to understand&lt;/U&gt;.&lt;/P&gt;
&lt;P&gt;On my platform &lt;STRONG&gt;31_dec_99&lt;/STRONG&gt; it is interpreted as 31DEC&lt;STRONG&gt;1999&lt;/STRONG&gt; therefore &lt;STRONG&gt;today()&lt;/STRONG&gt; was prefered .&lt;/P&gt;
&lt;P&gt;For my covenient i used &lt;STRONG&gt;ddmmyy10&lt;/STRONG&gt;. format instead &lt;STRONG&gt;date9&lt;/STRONG&gt;. - you may change it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data have;&lt;BR /&gt;input start_date : date9. end_date : date9. &lt;BR /&gt; position employee ;&lt;BR /&gt;if end_date = '31DEC99'd then end_date=today();&amp;nbsp;&lt;BR /&gt;format start_date end_date date9.;&lt;BR /&gt;cards;&lt;BR /&gt;1-Sep-14 31-Dec-99 348 574 &lt;BR /&gt;21-Mar-16 6-Jun-16 348 635 &lt;BR /&gt;1-Aug-13 31-Dec-99 554 963 &lt;BR /&gt;21-Jul-14 8-Jul-16 554 580 &lt;BR /&gt;2-Nov-15 27-Nov-15 554 78 &lt;BR /&gt;3-Sep-09 4-Apr-15 742 830 &lt;BR /&gt;21-May-15 24-Jun-15 742 38 &lt;BR /&gt;11-Jun-15 31-Dec-99 742 313 &lt;BR /&gt;23-Nov-15 11-Dec-15 751 44 &lt;BR /&gt;12-Dec-15 31-Dec-99 751 125 &lt;BR /&gt;8-Apr-16 22-Apr-16 751 44 &lt;BR /&gt;10-Mar-16 23-Mar-16 231 67 &lt;BR /&gt;24-Mar-16 6-Apr-16 231 723 &lt;BR /&gt;7-Apr-16 31-Dec-99 231 32 &lt;BR /&gt;7-Apr-16 20-Apr-16 231 839&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;proc sort data=have out=temp1;&lt;BR /&gt;&amp;nbsp; by position start_date employee;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data temp2(keep=position date priority employee);&lt;BR /&gt;&amp;nbsp;set temp1;&lt;BR /&gt;&amp;nbsp; by position start_date employee; &lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retain priority;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.position then priority = 0;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.employee then priority+1;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; do date=start_date to end_date; output; end;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format date ddmmyy10.;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;proc sort data=temp2 out=temp3;&lt;BR /&gt;&amp;nbsp; by position date priority ;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;data temp4(drop=priority);&lt;BR /&gt;&amp;nbsp; set temp3;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;by position notsorted date;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if last.date;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want(drop=date);&lt;BR /&gt;&amp;nbsp; set temp4;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;by position notsorted employee;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retain start_date;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format start_date end_date ddmmyy10.;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if first.employee then start_date = date;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if last.employee then do;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end_date = date;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;output;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;run; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sory for being not free to develop it earlier.&lt;/P&gt;
&lt;P&gt;Anyhow it was a chalenge.&lt;/P&gt;</description>
      <pubDate>Mon, 31 Oct 2016 19:19:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308357#M66166</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-10-31T19:19:48Z</dc:date>
    </item>
    <item>
      <title>Re: Not so simple time-line processing</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308404#M66181</link>
      <description>&lt;P&gt;Thanks - it's certainly neater.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Slight amendment needed though, to handle when an employee has separate spells in a position, without someone else in between.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've made small amendments&lt;FONT color="#808080"&gt;&lt;FONT color="#333333"&gt; accordingly, &lt;FONT color="#ff0000"&gt;highlighted&lt;/FONT&gt; below.&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;data have;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;input start_date : date9. end_date : date9. &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt; position employee ;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;if end_date = '31DEC99'd then end_date=today();&amp;nbsp;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;format start_date end_date date9.;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;cards;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;1-Sep-14 31-Dec-99 348 574 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;21-Mar-16 6-Jun-16 348 635 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;1-Aug-13 31-Dec-99 554 963 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;21-Jul-14 8-Jul-16 554 580 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;2-Nov-15 27-Nov-15 554 78 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;3-Sep-09 4-Apr-15 742 830 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;21-May-15 24-Jun-15 742&amp;nbsp;&lt;FONT color="#ff0000"&gt;&lt;STRONG&gt;830 &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;11-Jun-15 31-Dec-99 742 313 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;23-Nov-15 11-Dec-15 751 44 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;12-Dec-15 31-Dec-99 751 125 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;8-Apr-16 22-Apr-16 751 44 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;10-Mar-16 23-Mar-16 231 67 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;24-Mar-16 6-Apr-16 231 723 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;7-Apr-16 31-Dec-99 231 32 &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;7-Apr-16 20-Apr-16 231 839&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;proc sort data=have out=temp1;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; by position start_date employee;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&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;data temp2(keep=position date priority employee);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;set temp1;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; by position start_date employee; &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retain priority;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.position then priority = 0;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if first.employee then priority+1;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; do date=start_date to end_date; output; end;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; format date ddmmyy10.;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;proc sort data=temp2 out=temp3;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; by position date priority ;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;data temp4 &lt;FONT color="#ff0000"&gt;/* (drop=priority) */&lt;/FONT&gt;;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; set temp3;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp;by position notsorted date;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if last.date;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&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;data want(drop=date &lt;FONT color="#ff0000"&gt;priority&lt;/FONT&gt;);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; set temp4;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp;by position notsorted employee &lt;FONT color="#ff0000" face="Courier New" size="2"&gt;priority&lt;/FONT&gt;;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; retain start_date;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format start_date end_date ddmmyy10.;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if first.&lt;FONT color="#ff0000" face="Courier New" size="2"&gt;priority&lt;/FONT&gt; then start_date = date;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if last.&lt;FONT color="#ff0000" face="Courier New" size="2"&gt;priority&lt;/FONT&gt; then do;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end_date = date;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;output;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier" size="2"&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks again.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Nov 2016 00:24:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Not-so-simple-time-line-processing/m-p/308404#M66181</guid>
      <dc:creator>Atester</dc:creator>
      <dc:date>2016-11-01T00:24:02Z</dc:date>
    </item>
  </channel>
</rss>

