<?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: Keep obs in one dataset based on ID match and other variables match condition in another dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475061#M122143</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Thanks so much for providing this explanation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I looked further into my dataset 1 (x), the list of unique IDs and Date. I found that there was one ID (JUST&amp;nbsp;ONE)&amp;nbsp;that was duplicated. In the sample dataset, I had not&amp;nbsp;included all the variables in the dataset 1. But the duplication of the ID occurred due to these other variables. This duplication may have caused the code to not work for me, which worked in the explanation you gave. This duplication&amp;nbsp;may be&amp;nbsp;presenting difficulty for the subsetting of dataset 2 with the code.&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Company&lt;/TD&gt;
&lt;TD&gt;Exam type&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0000000333&lt;/TD&gt;
&lt;TD&gt;2017-06-05&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;IVA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0000000333&lt;/TD&gt;
&lt;TD&gt;2017-10-10&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;GA&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I still think that duplicate IDs in dataset1 have the effect described in my previous post.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's take a look at an example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
length ID $10;
input ID Date :yymmdd10.;
format Date yymmdd10.;
cards;
0000000333 2017-06-05
0000000333 2017-10-10
;

data dataset2;
length ID $10;
infile cards missover;
input ID SessionCode $ (SessionBeginDate SessionEndDate) (:yymmdd10.);
format _numeric_ yymmdd10.;
cards;
0000000333 J 2017-07-08
0000000333 K 2017-10-10
0000000333 L 2017-03-22 2017-09-30
0000000333 M 2017-09-22 2017-10-30
0000000333 N 2017-03-22 2017-12-31
0000000333 O 2017-01-01 2017-03-31
0000000333 P 2018-01-01 2018-03-31
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(PROC SQL step unchanged.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                     Session     Session         Session
Obs        ID         Code      BeginDate        EndDate

 1     0000000333       J       2017-07-08             .
 2     0000000333       K       2017-10-10             .
 3     0000000333       L       2017-03-22    2017-09-30
 4     0000000333       M       2017-09-22    2017-10-30
 5     0000000333       N       2017-03-22    2017-12-31
 6     0000000333       N       2017-03-22    2017-12-31&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Observation J was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10 (but not 2017-06-05) was after 2017-07-08 and SessionEndDate is missing.&lt;/LI&gt;
&lt;LI&gt;Observation&amp;nbsp;K was correctly selected&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was on SessionBeginDate (whereas 2017-06-05 was before this date).&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&amp;nbsp;L was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-06-05&amp;nbsp;(but not 2017-10-10) was between 2017-03-22 and 2017-09-30.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&amp;nbsp;M was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10&lt;SPAN&gt;&amp;nbsp;(but not 2017-06-05)&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was between 2017-09-22 and 2017-10-30.&lt;/LI&gt;
&lt;LI&gt;Observation&amp;nbsp;N was "correctly" selected &lt;EM&gt;twice&lt;/EM&gt;, because both &lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5 and&amp;nbsp;&lt;/SPAN&gt;2017-10-10 were between&amp;nbsp;&lt;SPAN&gt;2017-03-22 and 2017-12-31.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation O was correctly not selected, because neither &lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5&amp;nbsp;nor&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;201&lt;/SPAN&gt;&lt;SPAN&gt;7&lt;/SPAN&gt;&lt;SPAN&gt;-10-10&amp;nbsp;&lt;/SPAN&gt;was between 2017-01-01 and 2017-03-31&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&lt;SPAN&gt;&amp;nbsp;P&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was correctly not selected, because neither&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5&amp;nbsp;nor&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;201&lt;/SPAN&gt;&lt;SPAN&gt;7&lt;/SPAN&gt;&lt;SPAN&gt;-10-10&amp;nbsp;&lt;/SPAN&gt;was between 2018-01-01 and 2018-03-31&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;So, I don't see any incorrect selections. The duplicate record(s) could be suppressed easily by using the &lt;FONT face="courier new,courier"&gt;distinct&lt;/FONT&gt; keyword after "&lt;FONT face="courier new,courier"&gt;select&lt;/FONT&gt;". Additional variables in dataset1 should not interfere with the selection, as they are disregarded.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;(Sorry, I have to call it a day now. It's close to midnight in my time zone.)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 02 Jul 2018 21:49:22 GMT</pubDate>
    <dc:creator>FreelanceReinh</dc:creator>
    <dc:date>2018-07-02T21:49:22Z</dc:date>
    <item>
      <title>Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474953#M122107</link>
      <description>&lt;P&gt;I have two datasets x and y.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I&amp;nbsp;want to subset dataset 2 (y) based on the ID match and condition that if Date in dataset 1 (x) is at or in between Session Begin and End Date of the dataset&amp;nbsp;y then keep those observation in Dataset y. Where End date is blank (because "End" event has not occurred)&lt;/P&gt;&lt;P&gt;, then apply&amp;nbsp;condition&amp;nbsp;that if Date in dataset x is at or after End Date in dataset&amp;nbsp;y then also&amp;nbsp;keep these observation in Dataset y. Any suggestion to correct the code or any other method to do this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code I used:&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;Proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;SQL&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;Create&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="2"&gt;Table&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;want &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;as&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="2"&gt;select&lt;/FONT&gt; y&lt;FONT color="#008080" face="Courier New" size="2"&gt;.&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;*&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;dataset1 x, dataset2 y &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;where&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; x.ID=y.ID &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;and&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="2"&gt;((x.Date between y.SessionBeginDate &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;and&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; y.SessionEndDate) &lt;/FONT&gt;&lt;FONT color="#008000" face="Courier New" size="2"&gt;/* Do this when both Begin date and End date is available*/&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="2"&gt;x.Date GE y.SessionBeginDate);&lt;/FONT&gt;&lt;FONT color="#008000" face="Courier New" size="2"&gt;/* Do this When only Begin date is available but End date is blank because "End" event has not occurred*/&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;quit&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset I have:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Dataset 1: x&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Date&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000101&lt;/TD&gt;&lt;TD&gt;2017-03-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000104&lt;/TD&gt;&lt;TD&gt;2017-06-20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000105&lt;/TD&gt;&lt;TD&gt;2017-05-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000106&lt;/TD&gt;&lt;TD&gt;2017-06-20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000108&lt;/TD&gt;&lt;TD&gt;2017-10-12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000109&lt;/TD&gt;&lt;TD&gt;2017-11-01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;2017-11-08&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;2017-08-01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000112&lt;/TD&gt;&lt;TD&gt;2017-06-14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000114&lt;/TD&gt;&lt;TD&gt;2017-07-23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Dataset 2: y&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionCode&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionBeginDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionEndDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000101&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;2018-03-26&lt;/TD&gt;&lt;TD&gt;2018-04-09&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000101&lt;/TD&gt;&lt;TD&gt;W&lt;/TD&gt;&lt;TD&gt;2018-04-09&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000102&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2018-01-31&lt;/TD&gt;&lt;TD&gt;2018-05-30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000102&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-03-05&lt;/TD&gt;&lt;TD&gt;2018-05-30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000102&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2018-01-31&lt;/TD&gt;&lt;TD&gt;2018-05-30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000103&lt;/TD&gt;&lt;TD&gt;U&lt;/TD&gt;&lt;TD&gt;2016-10-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000103&lt;/TD&gt;&lt;TD&gt;W&lt;/TD&gt;&lt;TD&gt;2018-03-23&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000103&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2016-10-19&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000103&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2016-10-19&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000103&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2016-10-26&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000104&lt;/TD&gt;&lt;TD&gt;J&lt;/TD&gt;&lt;TD&gt;2017-04-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000104&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;2017-04-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000105&lt;/TD&gt;&lt;TD&gt;J&lt;/TD&gt;&lt;TD&gt;2017-12-11&lt;/TD&gt;&lt;TD&gt;2018-04-30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000105&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;2017-12-11&lt;/TD&gt;&lt;TD&gt;2018-04-30&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000106&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-03-13&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000106&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2015-05-14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000106&lt;/TD&gt;&lt;TD&gt;W&lt;/TD&gt;&lt;TD&gt;2018-03-19&lt;/TD&gt;&lt;TD&gt;2018-05-22&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000107&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-01-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000107&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2017-01-17&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000108&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-12-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000108&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2017-10-03&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000109&lt;/TD&gt;&lt;TD&gt;J&lt;/TD&gt;&lt;TD&gt;2017-09-22&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000109&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2016-01-04&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000109&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;2017-09-22&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-08-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-08-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2013-02-14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-11-13&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2018-04-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-11-13&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-04-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2017-11-13&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000111&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2018-04-18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000112&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-08-09&lt;/TD&gt;&lt;TD&gt;2018-04-05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000112&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2017-07-31&lt;/TD&gt;&lt;TD&gt;2018-04-05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-04-17&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2016-09-20&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000114&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2018-02-19&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000114&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2017-07-07&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;2018-03-29&lt;/TD&gt;&lt;TD&gt;2018-05-15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;J&lt;/TD&gt;&lt;TD&gt;2018-03-30&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;P&lt;/TD&gt;&lt;TD&gt;2018-03-30&lt;/TD&gt;&lt;TD&gt;2018-05-14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;2018-03-29&lt;/TD&gt;&lt;TD&gt;2018-05-15&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;J&lt;/TD&gt;&lt;TD&gt;2018-03-30&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000115&lt;/TD&gt;&lt;TD&gt;P&lt;/TD&gt;&lt;TD&gt;2018-03-30&lt;/TD&gt;&lt;TD&gt;2018-05-14&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Result: for example lets say for matched ID &amp;nbsp;0000000106,&amp;nbsp;0000000110 and 0000000113, obs I want to keep in Dataset 2 (Y) looks like:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionCode&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionBeginDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionEndDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000106&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2015-05-14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-08-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-08-28&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000110&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2013-02-14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;2017-09-19&lt;/TD&gt;&lt;TD&gt;2018-04-16&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000113&lt;/TD&gt;&lt;TD&gt;S&lt;/TD&gt;&lt;TD&gt;2016-09-20&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:39:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474953#M122107</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:39:54Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474960#M122108</link>
      <description>&lt;P&gt;What is your issue with the code your using? Are those dates in Character or Numeric?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can change that to LEFT Joins.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Proc SQL;
Create Table want as 
select y.*
	from dataset2 y 
		left join dataset1 x 
		 on x.ID=y.ID
Where (x.Date between y.SessionBeginDate and y.SessionEndDate) 
	or (x.Date GE y.SessionEndDate);

quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:09:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474960#M122108</guid>
      <dc:creator>SuryaKiran</dc:creator>
      <dc:date>2018-07-02T16:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474965#M122109</link>
      <description>&lt;P&gt;In my code where condition is not working, basically it is returning me all observations for a matched ID.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:19:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474965#M122109</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474969#M122110</link>
      <description>&lt;P&gt;Dates are numeric.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:28:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474969#M122110</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:28:11Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474973#M122113</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;In my code where condition is not working, basically it is returning me all observations for a matched ID.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;... which is not surprising, as the condition&lt;/P&gt;
&lt;PRE&gt;x.Date GE y.SessionEndDate&lt;/PRE&gt;
&lt;P&gt;will &lt;EM&gt;always&lt;/EM&gt; be met if y.SessionEndDate is missing and x.Date is non-missing (and even in many cases with missing x.Date).&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:34:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474973#M122113</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T16:34:56Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474976#M122114</link>
      <description>&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;My&amp;nbsp;mistake I meant to&amp;nbsp;write &lt;FONT face="Courier New" size="2"&gt;x.Date GE y.SessionBeginDate which is what I actually used.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;&lt;STRONG&gt;Proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;SQL&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;Create&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="2"&gt;Table&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;want &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;as&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="2"&gt;select&lt;/FONT&gt; y&lt;FONT color="#008080" face="Courier New" size="2"&gt;.&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;*&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&amp;nbsp;dataset1 x, dataset2 y &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;where&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; x.ID=y.ID &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;and&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="2"&gt;((x.Date between y.SessionBeginDate &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="2"&gt;and&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt; y.SessionEndDate) &lt;/FONT&gt;&lt;FONT color="#008000" face="Courier New" size="2"&gt;/* Do this when both Begin date and End date is available*/&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;or&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" size="2"&gt;x.Date GE y.SessionBeginDate);&lt;/FONT&gt;&lt;FONT color="#008000" face="Courier New" size="2"&gt;/* Do this When only Begin date is available but End date is blank because "End" event has not occurred*/&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="2"&gt;quit&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:39:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474976#M122114</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:39:19Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474978#M122116</link>
      <description>&lt;P&gt;Thank&amp;nbsp; you for pointing that out.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:40:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474978#M122116</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:40:44Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474982#M122118</link>
      <description>&lt;P&gt;Good. This makes more sense.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then I think, all it takes is to include the criteria about missing values in the WHERE condition, e.g.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;where x.id=y.id and
(.z&amp;lt;y.Sessionbegindate&amp;lt;=x.date&amp;lt;=y.Sessionenddate
or
x.date&amp;gt;=y.Sessionbegindate&amp;gt;.z &amp;amp; y.Sessionenddate is missing);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(using the special missing value .z)&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 17:00:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474982#M122118</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T17:00:58Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474985#M122120</link>
      <description>&lt;P&gt;This code is giving me unmatched PINs as well from dataset&amp;nbsp;y&amp;nbsp;since code says left join and where condition did not work.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 16:56:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/474985#M122120</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T16:56:20Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475003#M122127</link>
      <description>&lt;P&gt;This code is giving me&amp;nbsp;all observations for unmatched ID as well.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And also where condition did not work. For example one matched ID has "Date" as 3/22/2017 in Dataset x. The resulting dataset should not have highlighted red rows below, which is not according to the condition specified&amp;nbsp;(3/22/2017 is before 5/10/2017).&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionBeginDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SessionEndDate&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;3/22/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;3/22/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;2/22/2017&lt;/TD&gt;&lt;TD&gt;2/12/2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;0000000200&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#ff0000"&gt;5/10/2017&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000200&lt;/TD&gt;&lt;TD&gt;3/21/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 02 Jul 2018 18:07:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475003#M122127</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T18:07:26Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475006#M122129</link>
      <description>&lt;P&gt;Is this what your looking for?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
infile datalines dlm='09'x ;
format Date yymmdd10.;
input ID :$15.	Date :yymmdd10.;
datalines;
0000000101	2017-03-22
0000000104	2017-06-20
0000000105	2017-05-17
0000000106	2017-06-20
0000000108	2017-10-12
0000000109	2017-11-01
0000000110	2017-11-08
0000000111	2017-08-01
0000000112	2017-06-14
0000000113	2017-09-19
0000000114	2017-07-23
;
quit;

data dataset2;
format SessionBeginDate SessionEndDate  yymmdd10.;
infile datalines dlm='09'x missover;
input ID :$15.	SessionCode :$3.	SessionBeginDate :yymmdd10.	SessionEndDate :yymmdd10.;
datalines;
0000000101	E	2018-03-26	2018-04-09
0000000101	W	2018-04-09	 
0000000102	C	2018-01-31	2018-05-30
0000000102	M	2018-03-05	2018-05-30
0000000102	S	2018-01-31	2018-05-30
0000000103	U	2016-10-18	 
0000000103	W	2018-03-23	 
0000000103	C	2016-10-19	 
0000000103	M	2016-10-19	 
0000000103	S	2016-10-26	 
0000000104	J	2017-04-28	 
0000000104	F	2017-04-28	 
0000000105	J	2017-12-11	2018-04-30
0000000105	F	2017-12-11	2018-04-30
0000000106	M	2018-03-13	 
0000000106	S	2015-05-14	 
0000000106	W	2018-03-19	2018-05-22
0000000107	M	2017-01-18	 
0000000107	S	2017-01-17	 
0000000108	M	2017-12-18	 
0000000108	S	2017-10-03	 
0000000109	J	2017-09-22	 
0000000109	S	2016-01-04	 
0000000109	F	2017-09-22	 
0000000110	C	2017-08-28	 
0000000110	M	2017-08-28	 
0000000110	S	2013-02-14	 
0000000111	C	2017-11-13	2018-04-17
0000000111	C	2018-04-18	 
0000000111	M	2017-11-13	2018-04-17
0000000111	M	2018-04-18	 
0000000111	S	2017-11-13	2018-04-17
0000000111	S	2018-04-18	 
0000000112	M	2017-08-09	2018-04-05
0000000112	S	2017-07-31	2018-04-05
0000000113	A	2018-04-17	 
0000000113	M	2018-04-17	 
0000000113	C	2017-09-19	2018-04-16
0000000113	C	2017-09-19	2018-04-16
0000000113	M	2017-09-19	2018-04-16
0000000113	M	2018-04-17	 
0000000113	S	2016-09-20	 
0000000114	M	2018-02-19	 
0000000114	S	2017-07-07	 
0000000115	E	2018-03-29	2018-05-15
0000000115	J	2018-03-30	 
0000000115	P	2018-03-30	2018-05-14
0000000115	E	2018-03-29	2018-05-15
0000000115	J	2018-03-30	 
0000000115	P	2018-03-30	2018-05-14
;
run;


Proc SQL;
Create Table want as 
select y.*
from  dataset2 y
	left join dataset1 x
		on x.ID=y.ID
Where (x.Date between y.SessionBeginDate and y.SessionEndDate) 
	or
	  (x.Date GE y.SessionBeginDate and y.SessionEndDate is null );
Quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 02 Jul 2018 18:17:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475006#M122129</guid>
      <dc:creator>SuryaKiran</dc:creator>
      <dc:date>2018-07-02T18:17:32Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475016#M122131</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;This code is giving me&amp;nbsp;all observations for unmatched ID as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And also where condition did not work. For example one matched ID has "Date" as 3/22/2017 in Dataset x. The resulting dataset should not have highlighted red rows below, which is not according to the condition specified&amp;nbsp;(3/22/2017 is before 5/10/2017).&lt;/P&gt;
&lt;BR /&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To avoid any misunderstandings, let me post the complete PROC SQL step that my suggested WHERE condition was meant to be part of:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as select y.*
from dataset1 x, dataset2 y
where x.id=y.id and
(.z&amp;lt;y.Sessionbegindate&amp;lt;=x.date&amp;lt;=y.Sessionenddate
or
x.date&amp;gt;=y.Sessionbegindate&amp;gt;.z &amp;amp; y.Sessionenddate is missing);
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Do you get&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;"&lt;SPAN&gt;observations for unmatched ID" or&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;observations where (non-missing) x.date is before y.SessionBeginDate&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;with the above code? I don't think so.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 18:50:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475016#M122131</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T18:50:25Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475025#M122133</link>
      <description>&lt;P&gt;In&amp;nbsp;the resulting dataset what I want to do is:&lt;/P&gt;&lt;P&gt;First,&amp;nbsp;in Dataset 2 (y), keep only those&amp;nbsp;IDs that are in Dataset 1 (x). and remove all IDs that are not in Dataset 1.&lt;/P&gt;&lt;P&gt;Then Second, apply the date condition for a matched/common&amp;nbsp;IDs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To your question, Do you get&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;"&lt;SPAN&gt;observations for unmatched ID" or&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;observations where (non-missing) x.date is before y.SessionBeginDate&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;I am getting both.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 19:13:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475025#M122133</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T19:13:24Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475032#M122136</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;First,&amp;nbsp;in Dataset 2 (y), keep only those&amp;nbsp;IDs that are in Dataset 1 (x). and remove all IDs that are not in Dataset 1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is covered by the first part of the WHERE condition,&amp;nbsp;x.id=y.id.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Then Second, apply the date condition for a matched/common&amp;nbsp;IDs.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is covered by the second part of the WHERE condition.&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/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;To your question, Do you get&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;"&lt;SPAN&gt;observations for unmatched ID" or&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;observations where (non-missing) x.date is before y.SessionBeginDate&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;I am getting both.&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I'm still not convinced. Can you please provide some evidence to support this claim? Test datasets with a few observations should be sufficient.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 19:38:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475032#M122136</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T19:38:48Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475033#M122137</link>
      <description>Let me work on the test dataset that I can share.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 02 Jul 2018 19:42:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475033#M122137</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T19:42:15Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475049#M122139</link>
      <description>&lt;P&gt;Example providing evidence that the code &lt;EM&gt;does&lt;/EM&gt; work as intended:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
length ID $10;
input ID Date :yymmdd10.;
format Date yymmdd10.;
cards;
0000000001 2017-03-22
0000000002 2017-05-01
0000000003 2018-01-01
0000000004 2018-05-01
;

data dataset2;
length ID $10;
infile cards missover;
input ID SessionCode $ (SessionBeginDate SessionEndDate) (:yymmdd10.);
format _numeric_ yymmdd10.;
cards;
0000000001 A 2017-05-10
0000000001 B 2017-05-10 2017-12-31
0000000002 C 2017-03-22
0000000002 D 2017-03-22 2017-12-31
0000000003 E 2018-01-01
0000000003 F 2017-03-22 2017-12-31
0000000003 G 2017-12-01 2018-01-01
0000000005 H 2017-03-22
0000000005 I 2017-03-22 2017-12-31
;

proc sql;
create table want as select y.*
from dataset1 x, dataset2 y
where x.ID=y.ID and
(.z&amp;lt;y.SessionBeginDate&amp;lt;=x.date&amp;lt;=y.SessionEndDate
or
x.Date&amp;gt;=y.SessionBeginDate&amp;gt;.z &amp;amp; y.SessionEndDate is missing);
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                     Session     Session         Session
Obs        ID         Code      BeginDate        EndDate

 1     0000000002       C       2017-03-22             .
 2     0000000002       D       2017-03-22    2017-12-31
 3     0000000003       E       2018-01-01             .
 4     0000000003       G       2017-12-01    2018-01-01&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;(SessionCode values have been chosen to serve as identifiers for o&lt;/SPAN&gt;bservations in dataset2.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Matching observations A and B were correctly not selected, because 2017-03-22 was before 2017-05-10.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Matching&amp;nbsp;o&lt;/SPAN&gt;bservation C was correctly selected, because 2017-05-01 was after 2017-03-22 and SessionEndDate is missing.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Matching&amp;nbsp;o&lt;/SPAN&gt;bservation D was correctly selected, because 2017-05-01&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was between 2017-03-22 and 2017-12-31.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Matching&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;o&lt;/SPAN&gt;bservation&amp;nbsp;E was correctly selected, because 2018-01-01&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was on SessionBeginDate.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Matching&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;o&lt;/SPAN&gt;bservation F&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was correctly not selected, because 2018-01-01&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was after &lt;SPAN&gt;2017-12-31.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Matching&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;o&lt;/SPAN&gt;bservation G&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was correctly selected, because 2018-01-01&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was on SessionEndDate.&lt;/LI&gt;
&lt;LI&gt;Non-matching&amp;nbsp;&lt;SPAN&gt;o&lt;/SPAN&gt;&lt;SPAN&gt;bservations&amp;nbsp;H and I&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;were correctly not selected&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please note that &lt;EM&gt;duplicate&lt;/EM&gt; IDs in dataset1 (if any) satisfying the WHERE condition would cause &lt;EM&gt;duplicates&lt;/EM&gt; in dataset WANT, &lt;EM&gt;but not&lt;/EM&gt; incorrectly selected observations.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 20:34:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475049#M122139</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T20:34:40Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475054#M122141</link>
      <description>&lt;P&gt;Thanks so much for providing this explanation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I looked further into my dataset 1 (x), the list of unique IDs and Date. I found that there was one ID (JUST&amp;nbsp;ONE)&amp;nbsp;that was duplicated. In the sample dataset, I had not&amp;nbsp;included all the variables in the dataset 1. But the duplication of the ID occurred due to these other variables. This duplication may have caused the code to not work for me, which worked in the explanation you gave. This duplication&amp;nbsp;may be&amp;nbsp;presenting difficulty for the subsetting of dataset 2 with the code.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Company&lt;/TD&gt;&lt;TD&gt;Exam type&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000333&lt;/TD&gt;&lt;TD&gt;2017-06-05&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;IVA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;0000000333&lt;/TD&gt;&lt;TD&gt;2017-10-10&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;GA&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Mon, 02 Jul 2018 20:59:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475054#M122141</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T20:59:38Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475056#M122142</link>
      <description>&lt;P&gt;I ran code after removing that one duplicated ID and the code worked for unduplicated IDs and Date&amp;nbsp;in Dataset 1.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks so very much.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 21:17:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475056#M122142</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-02T21:17:17Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475061#M122143</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/155169"&gt;@d0816&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Thanks so much for providing this explanation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I looked further into my dataset 1 (x), the list of unique IDs and Date. I found that there was one ID (JUST&amp;nbsp;ONE)&amp;nbsp;that was duplicated. In the sample dataset, I had not&amp;nbsp;included all the variables in the dataset 1. But the duplication of the ID occurred due to these other variables. This duplication may have caused the code to not work for me, which worked in the explanation you gave. This duplication&amp;nbsp;may be&amp;nbsp;presenting difficulty for the subsetting of dataset 2 with the code.&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;ID&lt;/TD&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Company&lt;/TD&gt;
&lt;TD&gt;Exam type&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0000000333&lt;/TD&gt;
&lt;TD&gt;2017-06-05&lt;/TD&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;IVA&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;0000000333&lt;/TD&gt;
&lt;TD&gt;2017-10-10&lt;/TD&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;GA&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I still think that duplicate IDs in dataset1 have the effect described in my previous post.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Let's take a look at an example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
length ID $10;
input ID Date :yymmdd10.;
format Date yymmdd10.;
cards;
0000000333 2017-06-05
0000000333 2017-10-10
;

data dataset2;
length ID $10;
infile cards missover;
input ID SessionCode $ (SessionBeginDate SessionEndDate) (:yymmdd10.);
format _numeric_ yymmdd10.;
cards;
0000000333 J 2017-07-08
0000000333 K 2017-10-10
0000000333 L 2017-03-22 2017-09-30
0000000333 M 2017-09-22 2017-10-30
0000000333 N 2017-03-22 2017-12-31
0000000333 O 2017-01-01 2017-03-31
0000000333 P 2018-01-01 2018-03-31
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(PROC SQL step unchanged.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                     Session     Session         Session
Obs        ID         Code      BeginDate        EndDate

 1     0000000333       J       2017-07-08             .
 2     0000000333       K       2017-10-10             .
 3     0000000333       L       2017-03-22    2017-09-30
 4     0000000333       M       2017-09-22    2017-10-30
 5     0000000333       N       2017-03-22    2017-12-31
 6     0000000333       N       2017-03-22    2017-12-31&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Observation J was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10 (but not 2017-06-05) was after 2017-07-08 and SessionEndDate is missing.&lt;/LI&gt;
&lt;LI&gt;Observation&amp;nbsp;K was correctly selected&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was on SessionBeginDate (whereas 2017-06-05 was before this date).&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&amp;nbsp;L was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-06-05&amp;nbsp;(but not 2017-10-10) was between 2017-03-22 and 2017-09-30.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&amp;nbsp;M was correctly selected &lt;EM&gt;once&lt;/EM&gt;, because 2017-10-10&lt;SPAN&gt;&amp;nbsp;(but not 2017-06-05)&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was between 2017-09-22 and 2017-10-30.&lt;/LI&gt;
&lt;LI&gt;Observation&amp;nbsp;N was "correctly" selected &lt;EM&gt;twice&lt;/EM&gt;, because both &lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5 and&amp;nbsp;&lt;/SPAN&gt;2017-10-10 were between&amp;nbsp;&lt;SPAN&gt;2017-03-22 and 2017-12-31.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation O was correctly not selected, because neither &lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5&amp;nbsp;nor&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;201&lt;/SPAN&gt;&lt;SPAN&gt;7&lt;/SPAN&gt;&lt;SPAN&gt;-10-10&amp;nbsp;&lt;/SPAN&gt;was between 2017-01-01 and 2017-03-31&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;O&lt;/SPAN&gt;bservation&lt;SPAN&gt;&amp;nbsp;P&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;was correctly not selected, because neither&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;2017-0&lt;/SPAN&gt;&lt;SPAN&gt;6&lt;/SPAN&gt;&lt;SPAN&gt;-0&lt;/SPAN&gt;&lt;SPAN&gt;5&amp;nbsp;nor&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;201&lt;/SPAN&gt;&lt;SPAN&gt;7&lt;/SPAN&gt;&lt;SPAN&gt;-10-10&amp;nbsp;&lt;/SPAN&gt;was between 2018-01-01 and 2018-03-31&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;So, I don't see any incorrect selections. The duplicate record(s) could be suppressed easily by using the &lt;FONT face="courier new,courier"&gt;distinct&lt;/FONT&gt; keyword after "&lt;FONT face="courier new,courier"&gt;select&lt;/FONT&gt;". Additional variables in dataset1 should not interfere with the selection, as they are disregarded.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;(Sorry, I have to call it a day now. It's close to midnight in my time zone.)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jul 2018 21:49:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475061#M122143</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-07-02T21:49:22Z</dc:date>
    </item>
    <item>
      <title>Re: Keep obs in one dataset based on ID match and other variables match condition in another dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475230#M122189</link>
      <description>&lt;P&gt;You are right. I reran in the morning again. It worked.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Big Big Thank you for this help!!!&lt;/P&gt;</description>
      <pubDate>Tue, 03 Jul 2018 15:20:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-obs-in-one-dataset-based-on-ID-match-and-other-variables/m-p/475230#M122189</guid>
      <dc:creator>d0816</dc:creator>
      <dc:date>2018-07-03T15:20:01Z</dc:date>
    </item>
  </channel>
</rss>

