<?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: Sum statement in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393242#M25362</link>
    <description>&lt;P&gt;You can definitely conditionally execute a SUM statement. A SUM statement takes the form&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;variable + expression;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Here is code to sum the loans, non_loans and everything into separate running totals.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  set have ;
  if is_loan then total_loans+balance;
  else total_non_loans+balance;
  total_amount+balance;
  format total: dollar13. ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 510px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/14830iBB74D3833BB0E758/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;But if you want to have the total BY id then you do not really need (or want) a SUM statement since then you would need to reset the sum when you started and new group. &amp;nbsp;A double DOW works well for calculating over a group and carrying the vlaue onto all rows.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  do until(last.cust_id);
    set have ;
    by cust_id;
    if is_loan then total_loans=sum(total_loans,balance,0);
    else total_non_loans=sum(total_non_loans,balance,0);
  end;
  total_amount=sum(total_loans,total_non_loans);
  do until(last.cust_id);
    set have ;
    by cust_id;
    output;
  end;
  format total: dollar13. ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 511px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/14831iCCA3C0FCC438082A/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 05 Sep 2017 14:52:40 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2017-09-05T14:52:40Z</dc:date>
    <item>
      <title>Sum statement</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393104#M25350</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm trying to sum based on a condition. Data below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;cust_ID&lt;/TD&gt;&lt;TD&gt;is_loan&lt;/TD&gt;&lt;TD&gt;balance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$7,465&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$658&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$2,487&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$7,824&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$232,564&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$224&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$784&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to do like a&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data example;&lt;/P&gt;&lt;P&gt;set example_data;&lt;/P&gt;&lt;P&gt;if is_loan = 1 then sum(balance) output = total_loans;&lt;/P&gt;&lt;P&gt;if is_loan = 0 then sum(balance) output = total_account;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the output looks like this below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;cust_ID&lt;/TD&gt;&lt;TD&gt;is_loan&lt;/TD&gt;&lt;TD&gt;balance&lt;/TD&gt;&lt;TD&gt;total_loans&lt;/TD&gt;&lt;TD&gt;total_account&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$7,465&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 9,952.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8,482.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$658&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 9,952.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8,482.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$2,487&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 9,952.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8,482.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$7,824&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 9,952.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8,482.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$232,564&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 805.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 232,788.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;$224&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 805.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 232,788.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$21&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 805.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 232,788.00&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;600&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$784&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 805.00&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;$&amp;nbsp; 232,788.00&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So it is suming based on a condition and summing by customer_ID.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated.&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2017 07:07:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393104#M25350</guid>
      <dc:creator>Scott86</dc:creator>
      <dc:date>2017-09-05T07:07:30Z</dc:date>
    </item>
    <item>
      <title>Re: Sum statement</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393117#M25351</link>
      <description>&lt;P&gt;Its not really clear what you want here, also post test data in the form of a datastep so we have something to work with. &amp;nbsp;At a guess:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table WANT as 
  select  A.CUST_ID,
          A.IS_LOAN,
          A.BALANCE,
          B.TOTAL_LOANS,
          C.TOTAL_ACCOUNT
  from    HAVE A
  left join (select CUST_ID,sum(case when IS_LOAN=1 then BALANCE else . end) as TOTAL_LOANS) B
  on       A.CUST_ID=B.CUST_ID
  left join (select CUST_ID,sum(case when IS_LOAN=0 then BALANCE else . end) as TOTAL_ACCOUNT) C
  on       A.CUST_ID=C.CUST_ID;
quit;
&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Sep 2017 08:18:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393117#M25351</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-09-05T08:18:46Z</dc:date>
    </item>
    <item>
      <title>Re: Sum statement</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393141#M25353</link>
      <description>&lt;P&gt;While I think the RW9 solution would work, my SQL isn't strong enough to be sure. &amp;nbsp;So here's a DATA step approach:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;total_loans=0;&lt;/P&gt;
&lt;P&gt;total_account=0;&lt;/P&gt;
&lt;P&gt;do until (last.cust_ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by cust_ID;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if is_loan=0 then total_account + balance;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;else total_loans + balance;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;do until (last.cust_ID);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by cust_ID;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's optional whether you should set the total variables to 0 or missing at the start ... use whichever you would like to appear in your data set if there aren't any such observations.&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2017 10:20:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393141#M25353</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-09-05T10:20:38Z</dc:date>
    </item>
    <item>
      <title>Re: Sum statement</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393212#M25357</link>
      <description>&lt;P&gt;Just a bit shorter SQL that might do what you want &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;sql&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;select&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; cust_id&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;,is_loan, balance&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt; ,sum(&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;case&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; is_loan &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;when&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;then&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; balance &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;) &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;as&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; total_loans&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt; ,sum(&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;case&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; is_loan &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;when&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;then&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; balance &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;end&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;) &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;as&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; total_account&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;from&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; example_data&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Courier New" size="3"&gt;group&lt;/FONT&gt; &lt;FONT color="#0000ff" face="Courier New" size="3"&gt;by&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt; cust_id&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Courier New" size="3"&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="3"&gt;;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2017 13:34:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393212#M25357</guid>
      <dc:creator>FredrikE</dc:creator>
      <dc:date>2017-09-05T13:34:33Z</dc:date>
    </item>
    <item>
      <title>Re: Sum statement</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393242#M25362</link>
      <description>&lt;P&gt;You can definitely conditionally execute a SUM statement. A SUM statement takes the form&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;variable + expression;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Here is code to sum the loans, non_loans and everything into separate running totals.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  set have ;
  if is_loan then total_loans+balance;
  else total_non_loans+balance;
  total_amount+balance;
  format total: dollar13. ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 510px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/14830iBB74D3833BB0E758/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;But if you want to have the total BY id then you do not really need (or want) a SUM statement since then you would need to reset the sum when you started and new group. &amp;nbsp;A double DOW works well for calculating over a group and carrying the vlaue onto all rows.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  do until(last.cust_id);
    set have ;
    by cust_id;
    if is_loan then total_loans=sum(total_loans,balance,0);
    else total_non_loans=sum(total_non_loans,balance,0);
  end;
  total_amount=sum(total_loans,total_non_loans);
  do until(last.cust_id);
    set have ;
    by cust_id;
    output;
  end;
  format total: dollar13. ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 511px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/14831iCCA3C0FCC438082A/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Sep 2017 14:52:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Sum-statement/m-p/393242#M25362</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2017-09-05T14:52:40Z</dc:date>
    </item>
  </channel>
</rss>

