<?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: SAS query in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368089#M87741</link>
    <description>&lt;P&gt;And here is an approach using a datastep:&lt;/P&gt;
&lt;PRE&gt;DATA have;
  INPUT ID $ Team $ Rank $ Point;
  DATALINES;
111 T1 A1 0
112 T1 A2 300
113 T1 A2 600
114 T1 A3 400
115 T1 A3 100
116 T2 A1 0
117 T2 A2 1000
118 T2 A2 1600
119 T2 A3 1400
120 T2 A3 1100
;
run;

data want (drop=Tot:);
  do until (last.Team);
    set have;
    by Team;
    if First.Team then do;
      TPoints=0;
      Total1=0;
      Total2=0;
    end;
    TPoints+Point;
    if Rank eq 'A1' then Total1+Point;
    else if Rank eq 'A2' then Total2+Point;
  end;
  do until (last.Team);
    set have;
    by Team Rank;
    if first.Rank then do;
      if Rank eq 'A1' then TPoints+(Total1*-1);
      else if Rank eq 'A2' then TPoints+(Total2*-1);
    end;
    if Rank eq 'A3' then TPoints=Point;
    output;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 18 Jun 2017 16:15:11 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2017-06-18T16:15:11Z</dc:date>
    <item>
      <title>SAS query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368087#M87739</link>
      <description>&lt;P&gt;&lt;SPAN&gt;DATA ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;INPUT ID $ Team $ Rank $ Point&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;DATALINES;&lt;/SPAN&gt;&lt;BR /&gt;111 T1 A1 0&lt;/P&gt;&lt;P&gt;112 T1 A2 300&lt;/P&gt;&lt;P&gt;113 T1 A2 600&lt;/P&gt;&lt;P&gt;114 T1 A3 400&lt;/P&gt;&lt;P&gt;115 T1 A3 100&lt;/P&gt;&lt;P&gt;116 T2 A1 0&lt;/P&gt;&lt;P&gt;117 T2 A2 1000&lt;/P&gt;&lt;P&gt;118 T2 A2 1600&lt;/P&gt;&lt;P&gt;119 T2 A3 1400&lt;/P&gt;&lt;P&gt;120 T2 A3 1100&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;May I know how to get the TPoints? Rank A1 Tpoints will be from all A2 + A3 within the team. &amp;nbsp;A2 T Points will &amp;nbsp;be from A3 within the team; A3 Tpoints will be his own pts.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ID &amp;nbsp;Team &amp;nbsp;Rank &amp;nbsp;Ponts &amp;nbsp;TPoints&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;111 T1 &amp;nbsp; &amp;nbsp; A1 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1400&lt;/P&gt;&lt;P&gt;112 T1 &amp;nbsp; &amp;nbsp; A2 &amp;nbsp; &amp;nbsp; 300 &amp;nbsp; &amp;nbsp; &amp;nbsp; 500&amp;nbsp;&lt;/P&gt;&lt;P&gt;113 T1 &amp;nbsp; &amp;nbsp;A2 &amp;nbsp; &amp;nbsp; &amp;nbsp;600 &amp;nbsp; &amp;nbsp; &amp;nbsp; 500&lt;/P&gt;&lt;P&gt;114 T1 &amp;nbsp; &amp;nbsp;A3 &amp;nbsp; &amp;nbsp; 400 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;400&lt;/P&gt;&lt;P&gt;115 T1 &amp;nbsp; &amp;nbsp;A3 &amp;nbsp; &amp;nbsp;100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 100&lt;/P&gt;&lt;P&gt;116 T2 &amp;nbsp; &amp;nbsp;A1 &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5100&lt;/P&gt;&lt;P&gt;117 T2 &amp;nbsp; &amp;nbsp;A2 &amp;nbsp; &amp;nbsp;1000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2500&lt;/P&gt;&lt;P&gt;118 T2 &amp;nbsp; &amp;nbsp;A2 &amp;nbsp; &amp;nbsp;1600 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2500&lt;/P&gt;&lt;P&gt;119 T2 &amp;nbsp; &amp;nbsp;A3 &amp;nbsp; &amp;nbsp;1400 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1400 &amp;nbsp;&lt;/P&gt;&lt;P&gt;120 T2 &amp;nbsp; &amp;nbsp;A3 &amp;nbsp; 1100 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1100&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Jun 2017 15:16:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368087#M87739</guid>
      <dc:creator>scb</dc:creator>
      <dc:date>2017-06-18T15:16:16Z</dc:date>
    </item>
    <item>
      <title>Re: SAS query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368088#M87740</link>
      <description>&lt;P&gt;Does this do what you want?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
  create table want as 
  select a.id, a.team, a.rank, a.points
       , case when (a.rank='A3') then a.points
              else sum( b.points )
         end as Tpoints
  from have a 
  left join have b
  on a.team = b.team and a.rank &amp;lt; b.rank
  group by a.id, a.team, a.rank, a.points 
  order by a.id
  ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 18 Jun 2017 17:17:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368088#M87740</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2017-06-18T17:17:26Z</dc:date>
    </item>
    <item>
      <title>Re: SAS query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368089#M87741</link>
      <description>&lt;P&gt;And here is an approach using a datastep:&lt;/P&gt;
&lt;PRE&gt;DATA have;
  INPUT ID $ Team $ Rank $ Point;
  DATALINES;
111 T1 A1 0
112 T1 A2 300
113 T1 A2 600
114 T1 A3 400
115 T1 A3 100
116 T2 A1 0
117 T2 A2 1000
118 T2 A2 1600
119 T2 A3 1400
120 T2 A3 1100
;
run;

data want (drop=Tot:);
  do until (last.Team);
    set have;
    by Team;
    if First.Team then do;
      TPoints=0;
      Total1=0;
      Total2=0;
    end;
    TPoints+Point;
    if Rank eq 'A1' then Total1+Point;
    else if Rank eq 'A2' then Total2+Point;
  end;
  do until (last.Team);
    set have;
    by Team Rank;
    if first.Rank then do;
      if Rank eq 'A1' then TPoints+(Total1*-1);
      else if Rank eq 'A2' then TPoints+(Total2*-1);
    end;
    if Rank eq 'A3' then TPoints=Point;
    output;
  end;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 18 Jun 2017 16:15:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368089#M87741</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-06-18T16:15:11Z</dc:date>
    </item>
    <item>
      <title>Re: SAS query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368297#M87825</link>
      <description>&lt;PRE&gt;
DATA have;
  INPUT ID $ Team $ Rank $ Point;
  DATALINES;
111 T1 A1 0
112 T1 A2 300
113 T1 A2 600
114 T1 A3 400
115 T1 A3 100
116 T2 A1 0
117 T2 A2 1000
118 T2 A2 1600
119 T2 A3 1400
120 T2 A3 1100
;
run;

proc sql;
select *,case when rank='A1' then
(select sum(point) from have where rank in ('A2' 'A3') and team=a.team)
when rank='A2' then (select sum(point) from have where rank ='A3' and  team=a.team)
when rank='A3' then point
else . end as tpoints
 from have as a ;
quit;    &lt;/PRE&gt;</description>
      <pubDate>Mon, 19 Jun 2017 13:04:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368297#M87825</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-06-19T13:04:46Z</dc:date>
    </item>
    <item>
      <title>Re: SAS query</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368443#M87878</link>
      <description>&lt;P&gt;If you have more than 3 ranks following the same rule within one team and you have an existing ranking heirarchy as is or similar, Give a shot at&amp;nbsp;the following code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA have;
  INPUT ID $ Team $ Rank $ Point;
  DATALINES;
111 T1 A1 0
112 T1 A2 300
113 T1 A2 600
114 T1 A3 400
115 T1 A3 100
116 T2 A1 0
117 T2 A2 1000
118 T2 A2 1600
119 T2 A3 1400
120 T2 A3 1100
;
run;


proc sql;
create table want as
select *, coalesce((select sum(point) from have where team=a.team and rank &amp;gt; a.rank),point) as tpoints
  from have a;

quit; &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 19 Jun 2017 18:57:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-query/m-p/368443#M87878</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2017-06-19T18:57:27Z</dc:date>
    </item>
  </channel>
</rss>

