<?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: Custom Date Merge in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747618#M234692</link>
    <description>Its because of below condition&lt;BR /&gt;c.ID=d.ID and a.LOEND&amp;lt;=d.Ordering&amp;lt;=c.LOSTART&lt;BR /&gt;&lt;BR /&gt;Replace it with &lt;BR /&gt;c.ID=d.ID and a.LOEND&amp;lt;d.Ordering&amp;lt;c.LOSTART&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;It should work.&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Sun, 13 Jun 2021 14:39:22 GMT</pubDate>
    <dc:creator>MayurPhegde</dc:creator>
    <dc:date>2021-06-13T14:39:22Z</dc:date>
    <item>
      <title>Custom Date Merge</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747585#M234667</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;Below is my SAS code and the final 'Want' dataset.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;First rule is straight forward and have the code working for it. For example: ID#1 row 1: Line 2 falls between LOstart and&amp;nbsp; LOend. i.e. 7/16/2016 falls between 4/5/2016 and 8/16/2016&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;i need help with second rule. If the the ordering date doesn't fall between the specific LOstart and LOend, then search if it is between any 2 consecutive LINE's i.e. if it occurs between LOEnd of a line and beginning of next LOStart. For example ID#5 has a ordering date of 7/31/2016 and it does not fall between and specific date but it does fall between the LoEnd of Line = 2 and LoStart of Line = 3. So therefore it goes in line 2. ID#7 ordering date doesn't fall between LoStart and LoEnd; also doesn't have any consecutive line.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Data Want is below.&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditornewsas007_1" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dat1;
input ID	LINE (LOSTART	LOEND) (:mmddyy10.);
format LINE LOSTART LOEND mmddyy10.;
cards;
1	4	11/27/2017	1/17/2018
1	1	12/1/2015	4/1/2016
1	2	4/5/2016	8/16/2016
1	3	8/23/2016	11/14/2016
2	1	6/4/2016	9/18/2016
2	2	9/19/2016	11/11/2016
3	2	5/6/2016	7/17/2016
3	3	7/18/2016	10/3/2016
4	1	11/2/2015	5/30/2016
4	2	5/31/2016	12/28/2016
4	3	4/8/2018	1/9/2019
5	1	4/3/2015	6/4/2015
5	2	6/5/2015	12/27/2015
5	3	8/5/2016	9/7/2016
6	1	10/12/2015	6/2/2016
6	4	11/7/2016	4/20/2017
6	2	6/3/2016	8/27/2016
7	1	6/5/2016	6/15/2016
;

data dat2;
input ID	Ordering :mmddyy10.;
format ordering mmddyy10.;
cards;
1	7/16/2016
1	10/2/2017
2	7/18/2016
3	7/18/2016
4	7/26/2016
5	7/31/2016
6	7/31/2016
7	5/10/2016
;

proc sql;
create table ab  as
select distinct a.*, b.ordering
from dat1 a left join dat2 b
on a.ID=b.ID and LOSTART&amp;lt;=Ordering&amp;lt;=LOEND
order by a.ID;
quit;&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Data Want:&lt;BR /&gt;
ID	LINE	LOSTART	       LOEND	Ordering
1	First	12/1/2015	4/1/2016	.
1	Fourth	11/27/2017	1/17/2018	.
1	Second	4/5/2016	8/16/2016	7/16/2016
1	Third	8/23/2016	11/14/2016	.
2	First	6/4/2016	9/18/2016	7/18/2016
2	Second	9/19/2016	11/11/2016	.
3	Second	5/6/2016	7/17/2016	.
3	Third	7/18/2016	10/3/2016	7/18/2016
4	First	11/2/2015	5/30/2016	.
4	Second	5/31/2016	12/28/2016	7/26/2016
4	Third	4/8/2018	1/9/2019	.
5	First	4/3/2015	6/4/2015	.
5	Second	6/5/2015	12/27/2015	7/31/2016
5	Third	8/5/2016	9/7/2016	.
6	First	10/12/2015	6/2/2016	.
6	Fourth	11/7/2016	4/20/2017	.
6	Second	6/3/2016	8/27/2016	7/31/2016
7	First	6/5/2016	6/15/2016	.

&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 13 Jun 2021 02:08:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747585#M234667</guid>
      <dc:creator>newsas007</dc:creator>
      <dc:date>2021-06-13T02:08:29Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Date Merge</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747589#M234670</link>
      <description>&lt;P&gt;Check if below code helps:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
proc sort data=dat1 out=dat1_1;
by id line;
run;


proc sql;
create table ab as
select distinct a.*, coalesce(b.ordering,d.ordering) fromat=mmddyy10. as ordering
from dat1 a
left join dat2 b
on a.ID=b.ID and LOSTART&amp;lt;=Ordering&amp;lt;=LOEND
left join dat1 c
on a.ID=c.ID and a.line = c.line - 1
left join dat2 d
on c.ID=d.ID and a.LOEND&amp;lt;=d.Ordering&amp;lt;=c.LOSTART
order by a.ID;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;TABLE width="275"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="20"&gt;ID&lt;/TD&gt;
&lt;TD width="34"&gt;LINE&lt;/TD&gt;
&lt;TD width="76"&gt;LOSTART&lt;/TD&gt;
&lt;TD width="76"&gt;LOEND&lt;/TD&gt;
&lt;TD width="69"&gt;ordering&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;12/1/2015&lt;/TD&gt;
&lt;TD&gt;4/1/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;4/5/2016&lt;/TD&gt;
&lt;TD&gt;8/16/2016&lt;/TD&gt;
&lt;TD&gt;7/16/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;8/23/2016&lt;/TD&gt;
&lt;TD&gt;11/14/2016&lt;/TD&gt;
&lt;TD&gt;10/2/2017&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;11/27/2017&lt;/TD&gt;
&lt;TD&gt;1/17/2018&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;6/4/2016&lt;/TD&gt;
&lt;TD&gt;9/18/2016&lt;/TD&gt;
&lt;TD&gt;7/18/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;9/19/2016&lt;/TD&gt;
&lt;TD&gt;11/11/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;5/6/2016&lt;/TD&gt;
&lt;TD&gt;7/17/2016&lt;/TD&gt;
&lt;TD&gt;7/18/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;7/18/2016&lt;/TD&gt;
&lt;TD&gt;10/3/2016&lt;/TD&gt;
&lt;TD&gt;7/18/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;11/2/2015&lt;/TD&gt;
&lt;TD&gt;5/30/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;5/31/2016&lt;/TD&gt;
&lt;TD&gt;12/28/2016&lt;/TD&gt;
&lt;TD&gt;7/26/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;4/8/2018&lt;/TD&gt;
&lt;TD&gt;1/9/2019&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4/3/2015&lt;/TD&gt;
&lt;TD&gt;6/4/2015&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;6/5/2015&lt;/TD&gt;
&lt;TD&gt;12/27/2015&lt;/TD&gt;
&lt;TD&gt;7/31/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;8/5/2016&lt;/TD&gt;
&lt;TD&gt;9/7/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;10/12/2015&lt;/TD&gt;
&lt;TD&gt;6/2/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;6/3/2016&lt;/TD&gt;
&lt;TD&gt;8/27/2016&lt;/TD&gt;
&lt;TD&gt;7/31/2016&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;11/7/2016&lt;/TD&gt;
&lt;TD&gt;4/20/2017&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;6/5/2016&lt;/TD&gt;
&lt;TD&gt;6/15/2016&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Sun, 13 Jun 2021 06:17:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747589#M234670</guid>
      <dc:creator>MayurPhegde</dc:creator>
      <dc:date>2021-06-13T06:17:21Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Date Merge</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747615#M234689</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/363402"&gt;@MayurPhegde&lt;/a&gt;&amp;nbsp;: Thank you for this. There seems to be some issue with this. For example, the code below outputs ordering date (7/18/2016) twice for ID#3.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dat1;
input ID	LINE	(LOSTART	LOEND) (:mmddyy10.);
format 	LOSTART	LOEND mmddyy10.;
cards;
1	4	11/27/2017	1/17/2018
1	1	12/1/2015	4/1/2016
1	2	4/5/2016	8/16/2016
1	3	8/23/2016	11/14/2016
2	1	6/4/2016	9/18/2016
2	2	9/19/2016	11/11/2016
3	2	5/6/2016	7/17/2016
3	3	7/18/2016	10/3/2016
4	1	11/2/2015	5/30/2016
4	2	5/31/2016	12/28/2016
4	3	4/8/2018	1/9/2019
5	1	4/3/2015	6/4/2015
5	2	6/5/2015	12/27/2015
5	3	8/5/2016	9/7/2016
6	1	10/12/2015	6/2/2016
6	4	11/7/2016	4/20/2017
6	2	6/3/2016	8/27/2016
7	1	6/5/2016	6/15/2016
7   2   8/15/2016   9/15/2016
7   3   9/16/2016   10/16/2016 
;

data dat2;
input ID	Ordering :mmddyy10.;
format ordering mmddyy10.;
cards;
1	7/16/2016
1	10/2/2017
2	7/18/2016
3	7/18/2016
4	7/26/2016
5	7/31/2016
6	7/31/2016
7	7/10/2016
;

proc sql;
create table ab as
select distinct a.*, coalesce(b.ordering,d.ordering) format=mmddyy10. as ordering
from dat1 a
left join dat2 b
on a.ID=b.ID and LOSTART&amp;lt;=Ordering&amp;lt;=LOEND
left join dat1 c
on a.ID=c.ID and a.line = c.line - 1
left join dat2 d
on c.ID=d.ID and a.LOEND&amp;lt;=d.Ordering&amp;lt;=c.LOSTART
order by a.ID;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 13 Jun 2021 14:17:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747615#M234689</guid>
      <dc:creator>newsas007</dc:creator>
      <dc:date>2021-06-13T14:17:08Z</dc:date>
    </item>
    <item>
      <title>Re: Custom Date Merge</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747618#M234692</link>
      <description>Its because of below condition&lt;BR /&gt;c.ID=d.ID and a.LOEND&amp;lt;=d.Ordering&amp;lt;=c.LOSTART&lt;BR /&gt;&lt;BR /&gt;Replace it with &lt;BR /&gt;c.ID=d.ID and a.LOEND&amp;lt;d.Ordering&amp;lt;c.LOSTART&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;It should work.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Sun, 13 Jun 2021 14:39:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Custom-Date-Merge/m-p/747618#M234692</guid>
      <dc:creator>MayurPhegde</dc:creator>
      <dc:date>2021-06-13T14:39:22Z</dc:date>
    </item>
  </channel>
</rss>

