<?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: Proc SQL in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784211#M32071</link>
    <description>&lt;P&gt;Can this help you?&lt;/P&gt;
&lt;P&gt;I use the WEEKWw. format.&lt;/P&gt;
&lt;P&gt;Maybe you find the WEEKVw. format or the WEEKUw. format more appropriate?&lt;/P&gt;
&lt;P&gt;Also, business day is a "elastic" concept.&lt;/P&gt;
&lt;P&gt;Easter will "shift" from one year to another for example.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have20;
 do datum20 = '01JAN2020'd to '31DEC2020'd;
  datum_weeknumber20 = put(datum20,WEEKW10.);
  weekday = substr(datum_weeknumber20,5);
  output;
 end;
 format datum20 date9.;
run;

data have21;
 do datum21 = '01JAN2021'd to '31DEC2021'd;
  datum_weeknumber21 = put(datum21,WEEKW10.);
  weekday = substr(datum_weeknumber21,5);
  output;
 end;
 format datum21 date9.;
run;

data have_20_21;
 merge have20
       have21;
 by weekday;
run;
/* end of program */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Koen&lt;/P&gt;</description>
    <pubDate>Sun, 05 Dec 2021 21:22:36 GMT</pubDate>
    <dc:creator>sbxkoenk</dc:creator>
    <dc:date>2021-12-05T21:22:36Z</dc:date>
    <item>
      <title>SQL: match record with previous year on same business day</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784206#M32069</link>
      <description>&lt;P&gt;I have a data table as below&lt;/P&gt;
&lt;P&gt;I would like to match the &lt;U&gt;same business day&lt;/U&gt; (same month), current year vs. previous.&amp;nbsp; I have no idea where to start.&amp;nbsp; I can hard code the comparable business day date of last year but there must be a way to pick the same business day date for Sept 2020&lt;/P&gt;
&lt;P&gt;For example, September 2021 and September 2020&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;20210901 (business day 1) match with 20200901&lt;/LI&gt;
&lt;LI&gt;20210906 (business day 5) match with 20200905&lt;/LI&gt;
&lt;LI&gt;20210907 (business day 6) match with 20200906&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;here is the partial table and output below&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Year&lt;/TD&gt;
&lt;TD&gt;BusinessDay&lt;/TD&gt;
&lt;TD&gt;NoofItems&lt;/TD&gt;
&lt;TD&gt;Volume&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210901&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;918&lt;/TD&gt;
&lt;TD&gt;980221&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210902&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;775&lt;/TD&gt;
&lt;TD&gt;760314&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210903&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;659&lt;/TD&gt;
&lt;TD&gt;701345&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210904&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1012&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210906&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;883&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210907&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;899&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210908&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;916&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210909&lt;/TD&gt;
&lt;TD&gt;2021&lt;/TD&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;932&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200901&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1082&lt;/TD&gt;
&lt;TD&gt;932456&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200902&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1098&lt;/TD&gt;
&lt;TD&gt;914315&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200903&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1115&lt;/TD&gt;
&lt;TD&gt;962419&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200904&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1132&lt;/TD&gt;
&lt;TD&gt;1062458&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200905&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;1148&lt;/TD&gt;
&lt;TD&gt;1123489&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200907&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;1165&lt;/TD&gt;
&lt;TD&gt;1326178&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20200908&lt;/TD&gt;
&lt;TD&gt;2020&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;1181&lt;/TD&gt;
&lt;TD&gt;1464218&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Desired output as below&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Date&lt;/TD&gt;
&lt;TD&gt;Business_Day&lt;/TD&gt;
&lt;TD&gt;MTD_Volume_Sep2021&lt;/TD&gt;
&lt;TD&gt;MTD_Volume_Sep2020&lt;/TD&gt;
&lt;TD&gt;YoY_Changed&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210901&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;980221&lt;/TD&gt;
&lt;TD&gt;932456&lt;/TD&gt;
&lt;TD&gt;5%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210902&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1740535&lt;/TD&gt;
&lt;TD&gt;1846771&lt;/TD&gt;
&lt;TD&gt;-6%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210903&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;2441880&lt;/TD&gt;
&lt;TD&gt;2809190&lt;/TD&gt;
&lt;TD&gt;-13%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210904&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;2441880&lt;/TD&gt;
&lt;TD&gt;3871648&lt;/TD&gt;
&lt;TD&gt;-37%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210905&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;2441880&lt;/TD&gt;
&lt;TD&gt;4995137&lt;/TD&gt;
&lt;TD&gt;-51%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210906&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;2441880&lt;/TD&gt;
&lt;TD&gt;6321315&lt;/TD&gt;
&lt;TD&gt;-61%&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;20210907&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;2441880&lt;/TD&gt;
&lt;TD&gt;7785533&lt;/TD&gt;
&lt;TD&gt;-69%&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Mon, 06 Dec 2021 07:04:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784206#M32069</guid>
      <dc:creator>AshPatel</dc:creator>
      <dc:date>2021-12-06T07:04:41Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784209#M32070</link>
      <description>&lt;P&gt;Many of us refuse to download attachment files. And we can't program from your screen capture of the data. Please provide (a portion of) your data as SAS data step code (&lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;instructions&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also, how do you define "business day"?&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 21:09:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784209#M32070</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-12-05T21:09:25Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784211#M32071</link>
      <description>&lt;P&gt;Can this help you?&lt;/P&gt;
&lt;P&gt;I use the WEEKWw. format.&lt;/P&gt;
&lt;P&gt;Maybe you find the WEEKVw. format or the WEEKUw. format more appropriate?&lt;/P&gt;
&lt;P&gt;Also, business day is a "elastic" concept.&lt;/P&gt;
&lt;P&gt;Easter will "shift" from one year to another for example.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have20;
 do datum20 = '01JAN2020'd to '31DEC2020'd;
  datum_weeknumber20 = put(datum20,WEEKW10.);
  weekday = substr(datum_weeknumber20,5);
  output;
 end;
 format datum20 date9.;
run;

data have21;
 do datum21 = '01JAN2021'd to '31DEC2021'd;
  datum_weeknumber21 = put(datum21,WEEKW10.);
  weekday = substr(datum_weeknumber21,5);
  output;
 end;
 format datum21 date9.;
run;

data have_20_21;
 merge have20
       have21;
 by weekday;
run;
/* end of program */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Koen&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 21:22:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784211#M32071</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2021-12-05T21:22:36Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784223#M32072</link>
      <description>&lt;P&gt;Clarify your requirement. The "desired" looks like it doing something with CUMULATIVE totals, not day by day and your description is not clear. Otherwise I see no way to get&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;20210902&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1740535&lt;/TD&gt;
&lt;TD&gt;1846771&lt;/TD&gt;
&lt;TD&gt;-6%&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;when matching year and "business day".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If that is indeed the case this may be one way (note providing example data in the form of data step code)&lt;/P&gt;
&lt;PRE&gt;data have;
   input Date :yymmdd10.	Year	BusinessDay	NoofItems	Volume;
   format date yymmddn8.;
datalines;
20210901	2021	1	918	980221
20210902	2021	2	775	760314
20210903	2021	3	659	701345
20210904	2021	4	1012	0
20210906	2021	5	883	0
20210907	2021	6	899	0
20210908	2021	7	916	0
20210909	2021	8	932	0
20200901	2020	1	1082	932456
20200902	2020	2	1098	914315
20200903	2020	3	1115	962419
20200904	2020	4	1132	1062458
20200905	2020	5	1148	1123489
20200907	2020	6	1165	1326178
20200908	2020	7	1181	1464218
;
proc sort data=have;
   by year businessday;
run;
data need;
   set have;
   by year;
   retain cumvolume;
   if first.year then cumvolume=0;
   cumvolume+volume;
run;

proc sql;
   create table want as
   select a.date, a.BusinessDay,a.cumvolume as cyearvol
         , b.cumvolume as pyearvol,
         ((pyearvol - cyearvol)/pyearvol)
         as Yoychange format=percentn8.
   from need as a
        left join
        need as b
        on a.year=(b.year+1)
        and a.BusinessDay=b.BusinessDay
  ;
quit;
&lt;/PRE&gt;
&lt;P&gt;I did not make any attempt to name values by years because this sort of algorithm would work for multiple years worth of data so used cyear for current year and pyear for previous year.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If actual order is critical then use an Order by clause in the sql.&lt;/P&gt;</description>
      <pubDate>Sun, 05 Dec 2021 22:58:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SQL-match-record-with-previous-year-on-same-business-day/m-p/784223#M32072</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-12-05T22:58:24Z</dc:date>
    </item>
  </channel>
</rss>

