<?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: How to identify consecutive dates in SAS in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621237#M182611</link>
    <description>&lt;P&gt;I cannot tell from your statement or example report what you have or what you want.&lt;/P&gt;
&lt;P&gt;You talking about consecutive dates.&amp;nbsp; Are you trying to check if there are gaps between two dates?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input EMPLID $ TRANS_DT :mmddyy. CHANGED ;
  format TRANS_DT yymmdd10.;
cards;
300717 12/10/2019 1
300717 12/11/2019 0
300717 12/11/2019 1
300717 12/12/2019 0
300717 12/16/2019 1
300717 12/17/2019 0
300717 12/18/2019 0
300717 12/19/2019 0
300717 12/20/2019 0
300717 12/30/2019 1
300717 12/31/2019 0
300717 1/2/2020 1
300717 1/3/2020 0
300717 1/8/2020 1
300717 1/9/2020 0
300717 1/10/2020 0
300717 1/13/2020 1
300717 1/14/2020 0
300717 1/15/2020 0
300717 1/16/2020 0
300717 1/17/2020 0
300717 1/20/2020 1
300717 1/21/2020 0
300717 1/22/2020 0
300717 1/23/2020 0
300717 1/24/2020 0
;

data want;
  set have;
  by EMPLID trans_dt ;
  gap = dif(trans_dt) &amp;gt; 1;
  if first.EMPLID then gap=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;Obs    EMPLID      TRANS_DT    CHANGED    gap
  1    300717    2019-12-10       1        0
  2    300717    2019-12-11       0        0
  3    300717    2019-12-11       1        0
  4    300717    2019-12-12       0        0
  5    300717    2019-12-16       1        1
  6    300717    2019-12-17       0        0
  7    300717    2019-12-18       0        0
  8    300717    2019-12-19       0        0
  9    300717    2019-12-20       0        0
 10    300717    2019-12-30       1        1
 11    300717    2019-12-31       0        0
 12    300717    2020-01-02       1        1
 13    300717    2020-01-03       0        0
 14    300717    2020-01-08       1        1
 15    300717    2020-01-09       0        0
 16    300717    2020-01-10       0        0
 17    300717    2020-01-13       1        1
 18    300717    2020-01-14       0        0
 19    300717    2020-01-15       0        0
 20    300717    2020-01-16       0        0
 21    300717    2020-01-17       0        0
 22    300717    2020-01-20       1        1
 23    300717    2020-01-21       0        0
 24    300717    2020-01-22       0        0
 25    300717    2020-01-23       0        0
 26    300717    2020-01-24       0        0&lt;/PRE&gt;</description>
    <pubDate>Thu, 30 Jan 2020 17:18:37 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2020-01-30T17:18:37Z</dc:date>
    <item>
      <title>How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621155#M182567</link>
      <description>&lt;P&gt;I have the SQL query below that works in Oracle TOAD during testing to identify number of consecutive days for transactions by employee id. However, I need to incorporate this query into SAS to read of a SASdata set. Would someone know how to convert the SQL below to run in SAS? Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;select y.emplid, count(*) as Num_ConsecDays&lt;BR /&gt;from (&lt;BR /&gt;select x.emplid,x.trans_dt, sum(changed) over (partition by x.emplid order by x.trans_dt) sum_changed&lt;BR /&gt;from (&lt;BR /&gt;select a.emplid, b.trans_dt,&lt;BR /&gt;(case when lag(b.trans_dt) over (partition by a.emplid order by b.trans_dt) - b.trans_dt = -1&lt;BR /&gt;then 0 else 1 end ) as changed&lt;BR /&gt;from ps_ex_sheet_hdr a, ps_ex_sheet_line b&lt;BR /&gt;where b.trans_dt &amp;gt;= to_date('12/1/2019 00:00:00', 'mm/dd/yyyy hh24:mi:ss')&lt;BR /&gt;and b.trans_dt &amp;lt;= to_date('1/27/2020 23:59:59', 'mm/dd/yyyy hh24:mi:ss')&lt;BR /&gt;and a.sheet_id = b.sheet_id&lt;BR /&gt;and a.emplid = '300717')x )y&lt;BR /&gt;group by y.emplid, sum_changed;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 14:37:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621155#M182567</guid>
      <dc:creator>Mchan890</dc:creator>
      <dc:date>2020-01-30T14:37:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621157#M182569</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/309734"&gt;@Mchan890&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am not sure if that answers your question but here is a way to access to Oracle and copy-paste your SQL query:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
	connect to oracle (/*&amp;lt;your options such as user= password= path= ... to access DBMS&amp;gt;*/);
	select * from connection to oracle (/*&amp;lt;your SQL query&amp;gt;*/);
	disconnect from oracle;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;or&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;libname mylib oracle /*&amp;lt;your options such as user= password= path= ...&amp;gt;*/;

proc fedsql;
	/*&amp;lt;your query in native SQL language. Use the libref 'mylib.' to access the datasets&amp;gt;*/;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Hope this help,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 14:47:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621157#M182569</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-01-30T14:47:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621166#M182570</link>
      <description>&lt;P&gt;Thanks for t he feedback! The main data (ps_ex_sheet_hdr, ps_ex_sheet_line) are pulled with Oracle connection in SAS. I needed to convert the query to a Proc SQL on a subset of data in SAS.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 15:03:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621166#M182570</guid>
      <dc:creator>Mchan890</dc:creator>
      <dc:date>2020-01-30T15:03:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621190#M182578</link>
      <description>&lt;P&gt;Since your SQL is using syntax (windowing functions) not supported by PROC SQL you need to provide a &lt;STRONG&gt;description of what it is doing&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Provide example input and output data.&amp;nbsp; Make sure to provide them in the form of a data step that people that want to help you can copy and run to create your sample data.&amp;nbsp;&amp;nbsp;Also make sure to use the Insert Code or Insert SAS code buttons on the Forum editor when pasting (or typing) in code or data so the forum doesn't distort the layout because it thinks they are paragraphs.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 16:05:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621190#M182578</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-01-30T16:05:49Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621230#M182606</link>
      <description>&lt;P&gt;Pretty much I have a dataset of emplid and trans_dt and I need to flag when there is 'changed' to identify consecutive days. I would eventually sum this data by emplid to determine how many consecutive transaction dates an employee have.&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;EMPLID&lt;/TD&gt;&lt;TD&gt;TRANS_DT&lt;/TD&gt;&lt;TD&gt;CHANGED&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/10/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/11/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/11/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/12/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/16/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/17/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/18/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/19/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/20/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/30/2019&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;12/31/2019&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/2/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/3/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/8/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/9/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/10/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/13/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/14/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/15/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/16/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/17/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/20/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/21/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/22/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/23/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;300717&lt;/TD&gt;&lt;TD&gt;1/24/2020&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 30 Jan 2020 17:02:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621230#M182606</guid>
      <dc:creator>Mchan890</dc:creator>
      <dc:date>2020-01-30T17:02:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify consecutive dates in SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621237#M182611</link>
      <description>&lt;P&gt;I cannot tell from your statement or example report what you have or what you want.&lt;/P&gt;
&lt;P&gt;You talking about consecutive dates.&amp;nbsp; Are you trying to check if there are gaps between two dates?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input EMPLID $ TRANS_DT :mmddyy. CHANGED ;
  format TRANS_DT yymmdd10.;
cards;
300717 12/10/2019 1
300717 12/11/2019 0
300717 12/11/2019 1
300717 12/12/2019 0
300717 12/16/2019 1
300717 12/17/2019 0
300717 12/18/2019 0
300717 12/19/2019 0
300717 12/20/2019 0
300717 12/30/2019 1
300717 12/31/2019 0
300717 1/2/2020 1
300717 1/3/2020 0
300717 1/8/2020 1
300717 1/9/2020 0
300717 1/10/2020 0
300717 1/13/2020 1
300717 1/14/2020 0
300717 1/15/2020 0
300717 1/16/2020 0
300717 1/17/2020 0
300717 1/20/2020 1
300717 1/21/2020 0
300717 1/22/2020 0
300717 1/23/2020 0
300717 1/24/2020 0
;

data want;
  set have;
  by EMPLID trans_dt ;
  gap = dif(trans_dt) &amp;gt; 1;
  if first.EMPLID then gap=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;Obs    EMPLID      TRANS_DT    CHANGED    gap
  1    300717    2019-12-10       1        0
  2    300717    2019-12-11       0        0
  3    300717    2019-12-11       1        0
  4    300717    2019-12-12       0        0
  5    300717    2019-12-16       1        1
  6    300717    2019-12-17       0        0
  7    300717    2019-12-18       0        0
  8    300717    2019-12-19       0        0
  9    300717    2019-12-20       0        0
 10    300717    2019-12-30       1        1
 11    300717    2019-12-31       0        0
 12    300717    2020-01-02       1        1
 13    300717    2020-01-03       0        0
 14    300717    2020-01-08       1        1
 15    300717    2020-01-09       0        0
 16    300717    2020-01-10       0        0
 17    300717    2020-01-13       1        1
 18    300717    2020-01-14       0        0
 19    300717    2020-01-15       0        0
 20    300717    2020-01-16       0        0
 21    300717    2020-01-17       0        0
 22    300717    2020-01-20       1        1
 23    300717    2020-01-21       0        0
 24    300717    2020-01-22       0        0
 25    300717    2020-01-23       0        0
 26    300717    2020-01-24       0        0&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jan 2020 17:18:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-consecutive-dates-in-SAS/m-p/621237#M182611</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-01-30T17:18:37Z</dc:date>
    </item>
  </channel>
</rss>

