<?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: Flag those group of observations which have overlaps between two groups in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652135#M195754</link>
    <description>&lt;P&gt;Here is another SQL variation:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
format Start_date End_date mmddyy10.;
input ID $ Med $ MedGroup $ Start_date : mmddyy10. End_date : mmddyy10.;
datalines;
1 A  1 05/25/2017 10/30/2017
1 B  1 05/26/2017 06/03/2017
1 C  1 10/30/2017 10/30/2019
1 XX 2 01/02/2020 02/03/2020
2 A  1 03/04/2015 04/25/2015
2 XY 2 04/23/2015 04/22/2016
2 YY 2 04/22/2016 04/21/2017
3 XY 2 02/22/2019 03/21/2019
3 A  1 03/18/2019 05/15/2019
3 B  1 05/16/2019 02/01/2020
3 YY 2 01/20/2017 06/30/2017
3 YZ 2 01/01/2020 05/05/2020
;
run;

proc sql;
  create table want as
  select A.*
         ,B1.Min_Start_date1
         ,B1.Max_End_date1
         ,B2.Min_Start_date2
         ,B2.Max_End_date2
         ,case
            when (MedGroup = '1' and (A.Start_Date &amp;lt;= Max_End_date2 and A.End_date &amp;gt;= Min_Start_date2)) then 1 
            when (MedGroup = '2' and (A.Start_Date &amp;lt;= Max_End_date1 and A.End_date &amp;gt;= Min_Start_date1)) then 1 
            else 0
          end as Flag 

  from have as A
  left join
  (select ID 
         ,min(Start_date) as Min_Start_date1 format = mmddyy10.
         ,max(End_date ) as Max_End_date1 format = mmddyy10.
  from have
  where MedGroup = '1'
  group by ID
  ) as B1
  on A.ID = B1.ID

  left join
  (select ID
         ,min(Start_date) as Min_Start_date2 format = mmddyy10.
         ,max(End_date ) as Max_End_date2 format = mmddyy10.
  from have
  where MedGroup = '2'
  group by ID
  ) as B2
  on A.ID = B2.ID
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 01 Jun 2020 04:54:12 GMT</pubDate>
    <dc:creator>SASKiwi</dc:creator>
    <dc:date>2020-06-01T04:54:12Z</dc:date>
    <item>
      <title>Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652125#M195747</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I want to flag those group of observations(within one unique ID) which have overlaps(at least for one day)between two groups of drugs. Group 1 drugs are Drug A, B and C and Group 2 consists of Drug XX, XY, YY and Drug YZ.&lt;/P&gt;&lt;P&gt;So, for example, in one unique ID if there is at least one day overlap between drug A and drug XX then Flag=1 in both observations. If no overlap, then Flag=0. If there is any overlap between Drug A and Drug B then still Flag=0, because I want to see the overlaps between two groups of drugs. &amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Data- I have&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Med&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Start_date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;End_date&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/25/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/26/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06/03/2017&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;C&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2019&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XX&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/02/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/03/2020&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/04/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/25/2015&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/23/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/22/2016&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/22/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/21/2017&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/22/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/21/2019&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/18/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/15/2019&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/16/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/01/2020&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/20/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/05/2020&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data- I want&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Med&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Start_date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;End_date&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Flag&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/25/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/26/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06/03/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;C&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;10/30/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XX&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/02/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/03/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/04/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/25/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/23/2015&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/22/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/22/2016&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04/21/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;XY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/22/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/27/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/18/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03/25/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/16/2019&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;02/01/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YY&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/20/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;06/30/2017&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;YZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;01/01/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05/05/2020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 31 May 2020 23:24:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652125#M195747</guid>
      <dc:creator>SR11</dc:creator>
      <dc:date>2020-05-31T23:24:31Z</dc:date>
    </item>
    <item>
      <title>Re: Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652132#M195753</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID    Med $ (Start_date  End_date) (:mmddyy10.);
format Start_date  End_date yymmdd10.;
datalines;
1 A   05/25/2017  10/30/2017
1 B   05/26/2017  06/03/2017
1 C   10/30/2017  10/30/2019
1 XX  01/02/2020  02/03/2020
2 A   03/04/2015  04/25/2015
2 XY  04/23/2015  04/22/2016
2 YY  04/22/2016  04/21/2017
3 XY  02/22/2019  03/21/2019
3 A   03/18/2019  05/15/2019
3 B   05/16/2019  02/01/2020
3 YY  01/20/2017  06/30/2017
3 YZ  01/01/2020  05/05/2020
;

proc sql;&lt;BR /&gt;/* create table want as */
select *,
    case 
        when med in ("A", "B", "C") then 
            exists (select * from have where ID=a.ID and med in ("XX", "XY", "YY", "YZ") and 
                End_date &amp;gt;= a.Start_Date and Start_Date &amp;lt;= a.End_date )
        when med in ("XX", "XY", "YY", "YZ") then 
            exists (select * from have where ID=a.ID and med in ("A", "B", "C") and 
                End_date &amp;gt;= a.Start_Date and Start_Date &amp;lt;= a.End_date )
        else 0 end as Flag
from have as a;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Jun 2020 04:08:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652132#M195753</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-06-01T04:08:46Z</dc:date>
    </item>
    <item>
      <title>Re: Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652135#M195754</link>
      <description>&lt;P&gt;Here is another SQL variation:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
format Start_date End_date mmddyy10.;
input ID $ Med $ MedGroup $ Start_date : mmddyy10. End_date : mmddyy10.;
datalines;
1 A  1 05/25/2017 10/30/2017
1 B  1 05/26/2017 06/03/2017
1 C  1 10/30/2017 10/30/2019
1 XX 2 01/02/2020 02/03/2020
2 A  1 03/04/2015 04/25/2015
2 XY 2 04/23/2015 04/22/2016
2 YY 2 04/22/2016 04/21/2017
3 XY 2 02/22/2019 03/21/2019
3 A  1 03/18/2019 05/15/2019
3 B  1 05/16/2019 02/01/2020
3 YY 2 01/20/2017 06/30/2017
3 YZ 2 01/01/2020 05/05/2020
;
run;

proc sql;
  create table want as
  select A.*
         ,B1.Min_Start_date1
         ,B1.Max_End_date1
         ,B2.Min_Start_date2
         ,B2.Max_End_date2
         ,case
            when (MedGroup = '1' and (A.Start_Date &amp;lt;= Max_End_date2 and A.End_date &amp;gt;= Min_Start_date2)) then 1 
            when (MedGroup = '2' and (A.Start_Date &amp;lt;= Max_End_date1 and A.End_date &amp;gt;= Min_Start_date1)) then 1 
            else 0
          end as Flag 

  from have as A
  left join
  (select ID 
         ,min(Start_date) as Min_Start_date1 format = mmddyy10.
         ,max(End_date ) as Max_End_date1 format = mmddyy10.
  from have
  where MedGroup = '1'
  group by ID
  ) as B1
  on A.ID = B1.ID

  left join
  (select ID
         ,min(Start_date) as Min_Start_date2 format = mmddyy10.
         ,max(End_date ) as Max_End_date2 format = mmddyy10.
  from have
  where MedGroup = '2'
  group by ID
  ) as B2
  on A.ID = B2.ID
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 01 Jun 2020 04:54:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652135#M195754</guid>
      <dc:creator>SASKiwi</dc:creator>
      <dc:date>2020-06-01T04:54:12Z</dc:date>
    </item>
    <item>
      <title>Re: Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652669#M195976</link>
      <description>Thank you very much for this solution.</description>
      <pubDate>Tue, 02 Jun 2020 20:37:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652669#M195976</guid>
      <dc:creator>SR11</dc:creator>
      <dc:date>2020-06-02T20:37:29Z</dc:date>
    </item>
    <item>
      <title>Re: Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652670#M195977</link>
      <description>Thank you very much for this solution!</description>
      <pubDate>Tue, 02 Jun 2020 20:38:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652670#M195977</guid>
      <dc:creator>SR11</dc:creator>
      <dc:date>2020-06-02T20:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: Flag those group of observations which have overlaps between two groups</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652710#M196001</link>
      <description>&lt;P&gt;Give that the data are sorted by ID, there may be a performance advantage in using a data step with a BY ID construct:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID    Med $ (Start_date  End_date) (:mmddyy10.);
format Start_date  End_date yymmdd10.;
datalines;
1 A   05/25/2017  10/30/2017
1 B   05/26/2017  06/03/2017
1 C   10/30/2017  10/30/2019
1 XX  01/02/2020  02/03/2020
2 A   03/04/2015  04/25/2015
2 XY  04/23/2015  04/22/2016
2 YY  04/22/2016  04/21/2017
3 XY  02/22/2019  03/21/2019
3 A   03/18/2019  05/15/2019
3 B   05/16/2019  02/01/2020
3 YY  01/20/2017  06/30/2017
3 YZ  01/01/2020  05/05/2020
;

%let begdate=01jan2015;
%let enddate=31dec2020;
data want (drop=_:);
  array med_range {1:2,%sysevalf("&amp;amp;begdate"d):%sysevalf("&amp;amp;enddate"d)} _temporary_ ;

  set have (in=first_pass)   have (in=final_pass);
  by id;
  if first.id then call missing(of med_range{*});
  if med in ('A','B','C') then _grp=1;
  else _grp=2;

  if first_pass then do _d=start_date to end_date;
    med_range{_grp,_d}=1; 
  end;

  if final_pass;
  flag=0;
  _xgrp=3-_grp;  /*_grp=2 maps to _xgrp=1 and 1 maps to 2*/
  do _d=start_date to end_date until (flag=1);
    if med_range{_xgrp,_d}=1 then flag=1;
  end; 
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Each by group is processed twice.&amp;nbsp; The first pass sets up a 2-row matrix corresponding to the date range universe of your data.&amp;nbsp; Row 1 (_GRP=1) gets assigned 1's for each date group 1 is encountered,&amp;nbsp; row 2 has the same for group 2.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second pass compares the date range of the record-in-hand with the corresponding dates in the matrix corresponding to the complimentary drug group (_XGRP) and sets a flag if there is an overlap. &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Jun 2020 00:21:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Flag-those-group-of-observations-which-have-overlaps-between-two/m-p/652710#M196001</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-06-03T00:21:08Z</dc:date>
    </item>
  </channel>
</rss>

