<?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: Need help on an SQL query in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556920#M155194</link>
    <description>&lt;P&gt;I assume you want the 'sameday' argument in the INTNX function like 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 $ date:mmddyy10. return reportdate:mmddyy10. avgreturn;
format date reportdate mmddyy10.;
datalines;
1000 1/1/2000 1.1 1/5/2000 1.7
1000 1/2/2000 1.2 1/5/2000 1.7
1000 1/3/2000 1.3 1/5/2000 1.7
1000 1/4/2000 1.4 1/5/2000 1.7
1000 1/5/2000 1.5 1/5/2000 1.7
1000 1/6/2000 1.6 1/5/2000 1.7
1000 1/7/2000 1.7 1/5/2000 1.7
1000 1/8/2000 1.8 1/5/2000 1.7
1001 1/1/2000 1.9 1/3/2000 2.3
1001 1/2/2000 2 1/3/2000 2.3
1001 1/3/2000 2.1 1/3/2000 2.3
1001 1/4/2000 2.2 1/3/2000 2.3
1001 1/5/2000 2.3 1/3/2000 2.3
1001 1/6/2000 2.4 1/3/2000 2.3
1001 1/7/2000 2.5 1/3/2000 2.3
1002 1/1/2000 2.6 1/4/2000 3.05
1002 1/2/2000 2.7 1/4/2000 3.05
1002 1/3/2000 2.8 1/4/2000 3.05
1002 1/4/2000 2.9 1/4/2000 3.05
1002 1/5/2000 3 1/4/2000 3.05
1002 1/6/2000 3.1 1/4/2000 3.05
;

%let begdate = 0;
%let enddate = 5;
proc sql; create table want as 
select a.*, mean(b.return) as avgret
from have as a left join
     have as b 
on a.id=b.id and a.date=b.date
where b.date between intnx('WEEKDAY', a.reportdate, &amp;amp;begdate., 's') and intnx('WEEKDAY', a.reportdate, &amp;amp;enddate., 's')
order by a.id,a.date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 07 May 2019 19:16:37 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2019-05-07T19:16:37Z</dc:date>
    <item>
      <title>Need help on an SQL query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556917#M155191</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset looks like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;return&lt;/TD&gt;&lt;TD&gt;report date&lt;/TD&gt;&lt;TD&gt;avg. return&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/1/2000&lt;/TD&gt;&lt;TD&gt;1.1&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/2/2000&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;1.3&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;1.4&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.5&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/6/2000&lt;/TD&gt;&lt;TD&gt;1.6&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/7/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1/8/2000&lt;/TD&gt;&lt;TD&gt;1.8&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;1.7&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/1/2000&lt;/TD&gt;&lt;TD&gt;1.9&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/2/2000&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.1&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;2.2&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/6/2000&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1001&lt;/TD&gt;&lt;TD&gt;1/7/2000&lt;/TD&gt;&lt;TD&gt;2.5&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/1/2000&lt;/TD&gt;&lt;TD&gt;2.6&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/2/2000&lt;/TD&gt;&lt;TD&gt;2.7&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/3/2000&lt;/TD&gt;&lt;TD&gt;2.8&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;2.9&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/5/2000&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;1/6/2000&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;TD&gt;1/4/2000&lt;/TD&gt;&lt;TD&gt;3.05&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I need is to select a number of returns for each id based on the report dates. The returns selected are those within a 3-day window since the report date. After the selection, I want to calculate the average of the selected returns and output results as avg. return. I also want the sql query has certain flexibility that allows me to quickly specify other n-day windows, such as a 20-day window with 10 days prior to the report date and 10 days after.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I wrote a preliminary code but it seems not work as I intended:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let begdate = 0;
%let enddate = 5;
proc sql; create table want as 
select a.*, mean(b.return) as avgret
from have as a left join
     have as b 
on a.id=b.id and a.date=b.date
where b.date between intnx('WEEKDAY', rptdate, &amp;amp;begdate) and intnx('WEEKDAY', rptdate, &amp;amp;enddate)
order by a.permno,a.date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I appreciate your help on how to achieve this. Thank you.&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2019 19:02:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556917#M155191</guid>
      <dc:creator>Zerg</dc:creator>
      <dc:date>2019-05-07T19:02:39Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on an SQL query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556918#M155192</link>
      <description>&lt;P&gt;You didn't specify which day of the interval you wanted INTNX() to generate.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Options as BEGINNING, END, or SAME.&lt;/P&gt;
&lt;P&gt;Default is BEGINNING.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2019 19:13:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556918#M155192</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-05-07T19:13:04Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on an SQL query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556920#M155194</link>
      <description>&lt;P&gt;I assume you want the 'sameday' argument in the INTNX function like 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 $ date:mmddyy10. return reportdate:mmddyy10. avgreturn;
format date reportdate mmddyy10.;
datalines;
1000 1/1/2000 1.1 1/5/2000 1.7
1000 1/2/2000 1.2 1/5/2000 1.7
1000 1/3/2000 1.3 1/5/2000 1.7
1000 1/4/2000 1.4 1/5/2000 1.7
1000 1/5/2000 1.5 1/5/2000 1.7
1000 1/6/2000 1.6 1/5/2000 1.7
1000 1/7/2000 1.7 1/5/2000 1.7
1000 1/8/2000 1.8 1/5/2000 1.7
1001 1/1/2000 1.9 1/3/2000 2.3
1001 1/2/2000 2 1/3/2000 2.3
1001 1/3/2000 2.1 1/3/2000 2.3
1001 1/4/2000 2.2 1/3/2000 2.3
1001 1/5/2000 2.3 1/3/2000 2.3
1001 1/6/2000 2.4 1/3/2000 2.3
1001 1/7/2000 2.5 1/3/2000 2.3
1002 1/1/2000 2.6 1/4/2000 3.05
1002 1/2/2000 2.7 1/4/2000 3.05
1002 1/3/2000 2.8 1/4/2000 3.05
1002 1/4/2000 2.9 1/4/2000 3.05
1002 1/5/2000 3 1/4/2000 3.05
1002 1/6/2000 3.1 1/4/2000 3.05
;

%let begdate = 0;
%let enddate = 5;
proc sql; create table want as 
select a.*, mean(b.return) as avgret
from have as a left join
     have as b 
on a.id=b.id and a.date=b.date
where b.date between intnx('WEEKDAY', a.reportdate, &amp;amp;begdate., 's') and intnx('WEEKDAY', a.reportdate, &amp;amp;enddate., 's')
order by a.id,a.date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 May 2019 19:16:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556920#M155194</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-05-07T19:16:37Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on an SQL query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556930#M155198</link>
      <description>&lt;P&gt;No need for a join here:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id date :mmddyy. return	rptDate :mmddyy. avgRet;
datalines;
1000	1/1/2000	1.1	1/5/2000	1.7
1000	1/2/2000	1.2	1/5/2000	1.7
1000	1/3/2000	1.3	1/5/2000	1.7
1000	1/4/2000	1.4	1/5/2000	1.7
1000	1/5/2000	1.5	1/5/2000	1.7
1000	1/6/2000	1.6	1/5/2000	1.7
1000	1/7/2000	1.7	1/5/2000	1.7
1000	1/8/2000	1.8	1/5/2000	1.7
1001	1/1/2000	1.9	1/3/2000	2.3
1001	1/2/2000	2	1/3/2000	2.3
1001	1/3/2000	2.1	1/3/2000	2.3
1001	1/4/2000	2.2	1/3/2000	2.3
1001	1/5/2000	2.3	1/3/2000	2.3
1001	1/6/2000	2.4	1/3/2000	2.3
1001	1/7/2000	2.5	1/3/2000	2.3
1002	1/1/2000	2.6	1/4/2000	3.05
1002	1/2/2000	2.7	1/4/2000	3.05
1002	1/3/2000	2.8	1/4/2000	3.05
1002	1/4/2000	2.9	1/4/2000	3.05
1002	1/5/2000	3	1/4/2000	3.05
1002	1/6/2000	3.1	1/4/2000	3.05
;

%let priorDays = 3;
%let afterDays = 0;

proc sql; 
create table want as 
select 
    id, 
    rptDate format=yymmdd10.,  
    mean(return) as avgRet
from have
where intck("weekday", date, rptDate) between -&amp;amp;priorDays. and &amp;amp;afterDays.
group by id, rptDate;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 07 May 2019 20:09:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556930#M155198</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-05-07T20:09:52Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on an SQL query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556932#M155199</link>
      <description>&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2019 20:24:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-an-SQL-query/m-p/556932#M155199</guid>
      <dc:creator>Zerg</dc:creator>
      <dc:date>2019-05-07T20:24:50Z</dc:date>
    </item>
  </channel>
</rss>

