<?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 obtain this output? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329144#M73592</link>
    <description>&lt;P&gt;It is very good idea to post your data in the form of a data step. Otherwise we have to create such and may reach solutions that don't quite work because we do not know if some of your variables may be numeric or character.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And assuming that your output for Category B should B_category U and V and D should have S and D&amp;nbsp;this might get you started:&lt;/P&gt;
&lt;PRE&gt;data tableA;
   input Category $ Volume Minus_2000 Plus_2000 ;
datalines;
A 5000 3000 7000 
B 25000 23000 27000 
C 6000 4000 8000 
D 9000 7000 11000 
E 3000 1000 5000
;

data TableB;
   input Category $ Volume ;
datalines;
P 4501 
Q 3663 
R 2888 
S 8900 
T 20000 
V 25000 
U 26000 
D 9000 
;
run;

proc sql;
   create table want as
   select TableA.*, TableB.Category as B_Category
   from TableA,TableB
   where tableb.Volume between TableA.Minus_2000 and TableA.Plus_2000
   order by TableA.Category;
quit;&lt;/PRE&gt;
&lt;P&gt;Note the data step code to create data and posted in the forum code box opened with {i} icon.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However if you took a separate step to create the Plus and minus take a look at:&lt;/P&gt;
&lt;PRE&gt;proc sql;
   create table want2 as
   select TableA.*, TableB.Category as B_Category
   from TableA,TableB
   where  abs(TableA.Volume - Tableb.Volume) le 2000
   order by TableA.Category;
quit;&lt;/PRE&gt;
&lt;P&gt;which may be more flexible in the long run as you don't need the Plus or Minus variables if the range is symetric (+ or - the same value)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 01 Feb 2017 16:21:41 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2017-02-01T16:21:41Z</dc:date>
    <item>
      <title>How to obtain this output?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329134#M73586</link>
      <description>&lt;P&gt;hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have 2 table as shown below&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="272"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="4" width="272"&gt;A table&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Category&lt;/TD&gt;
&lt;TD&gt;Volume&lt;/TD&gt;
&lt;TD&gt;Minus_2000&lt;/TD&gt;
&lt;TD&gt;Plus_2000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;7000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;25000&lt;/TD&gt;
&lt;TD&gt;23000&lt;/TD&gt;
&lt;TD&gt;27000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;6000&lt;/TD&gt;
&lt;TD&gt;4000&lt;/TD&gt;
&lt;TD&gt;8000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;9000&lt;/TD&gt;
&lt;TD&gt;7000&lt;/TD&gt;
&lt;TD&gt;11000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;1000&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;5000&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="120"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="2" width="120"&gt;B Table&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Category&lt;/TD&gt;
&lt;TD&gt;Volume&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;TD&gt;4501&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Q&lt;/TD&gt;
&lt;TD&gt;3663&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;R&lt;/TD&gt;
&lt;TD&gt;2888&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;S&lt;/TD&gt;
&lt;TD&gt;8900&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;T&lt;/TD&gt;
&lt;TD&gt;20000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;V&lt;/TD&gt;
&lt;TD&gt;25000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;U&lt;/TD&gt;
&lt;TD&gt;26000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;9000&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In "A Table" we have Minus_20 and Plus_20 as ranges for lookup. within that range if "B Table" Volume falls then we need to have category of "B Table" with "A Table" as below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="343"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD colspan="5" width="343"&gt;Required Table&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Category&lt;/TD&gt;
&lt;TD&gt;Volume&lt;/TD&gt;
&lt;TD&gt;Minus_2000&lt;/TD&gt;
&lt;TD&gt;Plus_2000&lt;/TD&gt;
&lt;TD&gt;B_Category&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;7000&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;7000&lt;/TD&gt;
&lt;TD&gt;Q&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;25000&lt;/TD&gt;
&lt;TD&gt;23000&lt;/TD&gt;
&lt;TD&gt;27000&lt;/TD&gt;
&lt;TD&gt;V&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;6000&lt;/TD&gt;
&lt;TD&gt;4000&lt;/TD&gt;
&lt;TD&gt;8000&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;9000&lt;/TD&gt;
&lt;TD&gt;7000&lt;/TD&gt;
&lt;TD&gt;11000&lt;/TD&gt;
&lt;TD&gt;S&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;1000&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;P&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;1000&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;Q&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;3000&lt;/TD&gt;
&lt;TD&gt;1000&lt;/TD&gt;
&lt;TD&gt;5000&lt;/TD&gt;
&lt;TD&gt;R&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ganesh K&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2017 16:04:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329134#M73586</guid>
      <dc:creator>Ganeshk</dc:creator>
      <dc:date>2017-02-01T16:04:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to obtain this output?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329138#M73589</link>
      <description>&lt;P&gt;Post test data in the form of a datastep.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What happens if minus to plus covers more than one value in the lookup?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table WANT as
  select A.*,
         B.CATEGORY
  from   TABLEA A
  left join TABLEB B
  on     A.MINUS_2000 &amp;lt;= B.VOLUME &amp;lt; A.PLUS_2000;
quit;&lt;/PRE&gt;</description>
      <pubDate>Wed, 01 Feb 2017 16:11:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329138#M73589</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-02-01T16:11:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to obtain this output?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329140#M73590</link>
      <description>&lt;P&gt;I think the SQL programmers will knock this one out quickly.&amp;nbsp; But first a couple of questions to clarify ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"B" is matching with "V".&amp;nbsp; Shouldn't it also match with "U"?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Should the program ignore "D" matching with "D"?&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2017 16:14:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329140#M73590</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-02-01T16:14:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to obtain this output?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329144#M73592</link>
      <description>&lt;P&gt;It is very good idea to post your data in the form of a data step. Otherwise we have to create such and may reach solutions that don't quite work because we do not know if some of your variables may be numeric or character.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And assuming that your output for Category B should B_category U and V and D should have S and D&amp;nbsp;this might get you started:&lt;/P&gt;
&lt;PRE&gt;data tableA;
   input Category $ Volume Minus_2000 Plus_2000 ;
datalines;
A 5000 3000 7000 
B 25000 23000 27000 
C 6000 4000 8000 
D 9000 7000 11000 
E 3000 1000 5000
;

data TableB;
   input Category $ Volume ;
datalines;
P 4501 
Q 3663 
R 2888 
S 8900 
T 20000 
V 25000 
U 26000 
D 9000 
;
run;

proc sql;
   create table want as
   select TableA.*, TableB.Category as B_Category
   from TableA,TableB
   where tableb.Volume between TableA.Minus_2000 and TableA.Plus_2000
   order by TableA.Category;
quit;&lt;/PRE&gt;
&lt;P&gt;Note the data step code to create data and posted in the forum code box opened with {i} icon.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However if you took a separate step to create the Plus and minus take a look at:&lt;/P&gt;
&lt;PRE&gt;proc sql;
   create table want2 as
   select TableA.*, TableB.Category as B_Category
   from TableA,TableB
   where  abs(TableA.Volume - Tableb.Volume) le 2000
   order by TableA.Category;
quit;&lt;/PRE&gt;
&lt;P&gt;which may be more flexible in the long run as you don't need the Plus or Minus variables if the range is symetric (+ or - the same value)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Feb 2017 16:21:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-obtain-this-output/m-p/329144#M73592</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2017-02-01T16:21:41Z</dc:date>
    </item>
  </channel>
</rss>

