<?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: SUMMING BASED ON DISTINCT ACCOUNT_NUMBER AND BASED ON CREDIT OR DEBIT in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877444#M38961</link>
    <description>&lt;P&gt;You're looking for if FIRST.&amp;lt;variable from by statement&amp;gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data C;
  set A;
  by ACCOUNT_NO;
  retain CH_BAL;

  if first.account_no then call missing(CH_BAL);

  if AMT_CRDR EQ 'C' then
    CH_BAL=sum(CH_BAL,AMT_TXN);

  if AMT_CRDR EQ 'D' then
    CH_BAL=sum(CH_BAL,-AMT_TXN);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 25 May 2023 06:12:53 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2023-05-25T06:12:53Z</dc:date>
    <item>
      <title>SUMMING BASED ON DISTINCT ACCOUNT_NUMBER AND BASED ON CREDIT OR DEBIT</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877443#M38960</link>
      <description>&lt;P&gt;I have a data where I have Account Number as ACCOUNT_NO, Amount of Transaction as AMT_TXN, the type/flag&lt;BR /&gt;of transaction Credit or Debit as AMT_CRDR and date of transaction as DATE_TXN &lt;BR /&gt;Something like below data step.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;
input ACCOUNT_NO $ AMT_TXN $ AMT_CRDR $ DATE_TXN date7.;
format DATE_TXN date9.;
cards;
1  100  C  02APR2022
2  45   C  03APR2022
4  66   C  04APR2022
2  90   D  04APR2022
3  23   D  05APR2022
5  7    C  05APR2022
6  35   C  09APR2022
8  99   D  01MAY2022
8  100  D  22MAY2022
3  120  C  23MAY2022
1  200  C  25MAY2022
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Now, What I want is to introduce a new column which has final balance for each distinct account.&lt;BR /&gt;For Example: Lets take the first ACCOUNT_NO that is 1.&lt;BR /&gt;-&amp;gt; First we need to sort data based on ACCOUNT_NO&lt;BR /&gt;-&amp;gt; Now I want to introduce a new column(CH_BAL) which will be initialised with a value of 0 and &lt;BR /&gt;it will keep tap of the updated balance in the account&lt;/P&gt;
&lt;P&gt;This column will work in such a way as below mentioned logic&lt;BR /&gt;If AMT_CRDR = 'C' then CH_BAL = CH_BAL + AMT_TXN;&lt;BR /&gt;if AMT_CRDR = 'D' then CH_BAL = CH_BAL - AMT_TXN;&lt;BR /&gt;(NOTE: ACCOUNT_NUMBERS ARE SORTED)&lt;BR /&gt;The above should work until the account number is same. But the moment the account number changes &lt;BR /&gt;It should again initialize the balance to zero and then goes into the cycle of analyzing if its a 'C' then add and if 'D' then subtract.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;SORTED DATA
1  100  C  02APR2022
1  200  C  25MAY2022
2  45   C  03APR2022
2  90   D  04APR2022
3  23   D  05APR2022
3  120  C  23MAY2022
4  66   C  04APR2022
5  7    C  05APR2022
6  35   C  09APR2022
8  99   D  01MAY2022
8  100  D  22MAY2022&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The final result should look like below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="302"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="96"&gt;&lt;STRONG&gt;ACCOUNT_NO&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="67"&gt;&lt;STRONG&gt;AMT_TXN&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="75"&gt;&lt;STRONG&gt;AMT_CRDR&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;CH_BAL&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;200&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;300&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;45&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;45&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;90&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;-45&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;23&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;-23&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;120&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;97&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;66&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;66&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;35&lt;/TD&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;35&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;99&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;-99&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;-199&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Although I was able to attain the same if the account number is same using &lt;BR /&gt;below code.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data A;
input ACCOUNT_NO $ AMT_TXN $ AMT_CRDR $ DATE_TXN date7.;
format DATE_TXN date9.;
cards;
1  100  C  02APR2022
1  45   C  03APR2022
1  66   C  04APR2022
1  90   D  04APR2022
1  23   D  05APR2022
1  7    C  05APR2022
1  35   C  09APR2022
1  99   D  01MAY2022
1  100  D  22MAY2022
1  120  C  23MAY2022
1  200  C  25MAY2022
;
run;

data C;
set A;
by ACCOUNT_NO;
retain CH_BAL  0;
if AMT_CRDR EQ 'C' then CH_BAL = CH_BAL + AMT_TXN;
if AMT_CRDR EQ 'D' then CH_BAL = CH_BAL - AMT_TXN;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result of the above is as below screenshot.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Kirito1_0-1684993809371.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/84293iE07F1BA2052F999B/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Kirito1_0-1684993809371.png" alt="Kirito1_0-1684993809371.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Please, help me in approaching, solving&amp;nbsp; and building logic for this problem.&lt;BR /&gt;Thanks in advance to all the contributors. Kindly, reply if anything is not clear. (Although I think&amp;nbsp; I have made it pretty clear what is the problem.)&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 25 May 2023 05:52:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877443#M38960</guid>
      <dc:creator>Kirito1</dc:creator>
      <dc:date>2023-05-25T05:52:05Z</dc:date>
    </item>
    <item>
      <title>Re: SUMMING BASED ON DISTINCT ACCOUNT_NUMBER AND BASED ON CREDIT OR DEBIT</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877444#M38961</link>
      <description>&lt;P&gt;You're looking for if FIRST.&amp;lt;variable from by statement&amp;gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data C;
  set A;
  by ACCOUNT_NO;
  retain CH_BAL;

  if first.account_no then call missing(CH_BAL);

  if AMT_CRDR EQ 'C' then
    CH_BAL=sum(CH_BAL,AMT_TXN);

  if AMT_CRDR EQ 'D' then
    CH_BAL=sum(CH_BAL,-AMT_TXN);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 25 May 2023 06:12:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877444#M38961</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-05-25T06:12:53Z</dc:date>
    </item>
    <item>
      <title>Re: SUMMING BASED ON DISTINCT ACCOUNT_NUMBER AND BASED ON CREDIT OR DEBIT</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877455#M38962</link>
      <description>BTW what is first doing in this code. Can you please Explain.</description>
      <pubDate>Thu, 25 May 2023 07:27:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877455#M38962</guid>
      <dc:creator>Kirito1</dc:creator>
      <dc:date>2023-05-25T07:27:25Z</dc:date>
    </item>
    <item>
      <title>Re: SUMMING BASED ON DISTINCT ACCOUNT_NUMBER AND BASED ON CREDIT OR DEBIT</title>
      <link>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877622#M38965</link>
      <description>&lt;P&gt;That's fully documented.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://go.documentation.sas.com/doc/en/lrcon/9.4/n01a08zkzy5igbn173zjz82zsi1s.htm" target="_self"&gt;FIRST. and LAST. DATA Step Variables&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 26 May 2023 01:23:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/SUMMING-BASED-ON-DISTINCT-ACCOUNT-NUMBER-AND-BASED-ON-CREDIT-OR/m-p/877622#M38965</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2023-05-26T01:23:18Z</dc:date>
    </item>
  </channel>
</rss>

