<?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: Finding second last Transaction for each customer id in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159535#M2917</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I assume if you are working with transaction dataset just like the way I do here at work, you would have sorted the dataset by id and date and even timestamp if you want to precisely get to see the 2nd last transaction. Anyways, if I understood you correctly, the following code may work for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;&lt;P&gt;l&amp;amp;t infotech&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input TRAN_ID TRAN_DT date9. amt;&lt;/P&gt;&lt;P&gt;format TRAN_DT date9.; &lt;/P&gt;&lt;P&gt;datalines;&lt;BR /&gt;10442673557 01Oct2014 100&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 200&lt;/P&gt;&lt;P&gt;10442673557 01Nov2014 300&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 400&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 500&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 600&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 700&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 400&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 800&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 300&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 100&lt;/P&gt;&lt;P&gt;10442673557 02Dec2014 100&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;proc sort data=have out=have2;&lt;BR /&gt;by tran_id tran_dt;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want2;&lt;/P&gt;&lt;P&gt;set have2;&lt;/P&gt;&lt;P&gt;by Tran_id Tran_dt;&lt;/P&gt;&lt;P&gt;array real(3) TRAN_ID TRAN_DT&amp;nbsp; amt;&lt;/P&gt;&lt;P&gt;array copy(3) tran_id2 tran_dt2 amt2;&lt;/P&gt;&lt;P&gt;retain copy;&lt;/P&gt;&lt;P&gt;if not last.Tran_id then do;&lt;/P&gt;&lt;P&gt;do i=1 to dim(copy);&lt;/P&gt;&lt;P&gt;copy(i)=real(i);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;if last.Tran_id then output;&lt;/P&gt;&lt;P&gt;keep tran_id2 tran_dt2 amt2;&lt;/P&gt;&lt;P&gt;format tran_dt2 date9.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 22 Dec 2014 08:37:21 GMT</pubDate>
    <dc:creator>naveen_srini</dc:creator>
    <dc:date>2014-12-22T08:37:21Z</dc:date>
    <item>
      <title>Finding second last Transaction for each customer id</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159532#M2914</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;I have a dataset like below.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;data have;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;input TRAN_ID TRAN_DT date9. amt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;format TRAN_DT date9.; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;datalines;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Oct2014 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Oct2014 200&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Nov2014 300&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Oct2014 400&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Oct2014 500&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 600&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 700&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 400&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 800&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 300&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 02Dec2014 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;i want output like that.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673557 01Oct2014 400&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;10442673558 02Oct2014 100&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;can anyone please help?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Dec 2014 03:54:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159532#M2914</guid>
      <dc:creator>pankak</dc:creator>
      <dc:date>2014-12-22T03:54:22Z</dc:date>
    </item>
    <item>
      <title>Re: Finding second last Transaction for each customer id</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159533#M2915</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;by TRAN_ID;&lt;/P&gt;&lt;P&gt;if first.TRAN_ID then id=0;&lt;/P&gt;&lt;P&gt;id+1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;proc sql;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;create table final(drop=id) as&lt;/P&gt;&lt;P&gt;select * from want&lt;/P&gt;&lt;P&gt;group by TRAN_ID&lt;/P&gt;&lt;P&gt;having id=max(id)-1;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Dec 2014 05:33:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159533#M2915</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-12-22T05:33:01Z</dc:date>
    </item>
    <item>
      <title>Re: Finding second last Transaction for each customer id</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159534#M2916</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;
data have;
input TRAN_ID TRAN_DT date9. amt;
format TRAN_DT date9.;
datalines;
 
10442673557 01Oct2014 100
10442673557 01Oct2014 200
10442673557 01Nov2014 300
10442673557 01Oct2014 400
10442673557 01Oct2014 500
10442673558 02Oct2014 600
10442673558 02Oct2014 700
10442673558 02Oct2014 400
10442673558 02Oct2014 800
10442673558 02Oct2014 300
10442673558 02Oct2014 100
10442673558 02Dec2014 100
;
run;
data want(drop=found _TRAN_ID);
 merge have have(keep=TRAN_ID rename=(TRAN_ID=_TRAN_ID) firstobs=3);
 retain found 0;
 if TRAN_ID ne lag(TRAN_ID) then found=0;
 if not found and TRAN_ID ne _TRAN_ID then do;output;found=1;end;
run;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Dec 2014 07:43:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159534#M2916</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2014-12-22T07:43:20Z</dc:date>
    </item>
    <item>
      <title>Re: Finding second last Transaction for each customer id</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159535#M2917</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I assume if you are working with transaction dataset just like the way I do here at work, you would have sorted the dataset by id and date and even timestamp if you want to precisely get to see the 2nd last transaction. Anyways, if I understood you correctly, the following code may work for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;&lt;P&gt;l&amp;amp;t infotech&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input TRAN_ID TRAN_DT date9. amt;&lt;/P&gt;&lt;P&gt;format TRAN_DT date9.; &lt;/P&gt;&lt;P&gt;datalines;&lt;BR /&gt;10442673557 01Oct2014 100&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 200&lt;/P&gt;&lt;P&gt;10442673557 01Nov2014 300&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 400&lt;/P&gt;&lt;P&gt;10442673557 01Oct2014 500&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 600&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 700&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 400&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 800&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 300&lt;/P&gt;&lt;P&gt;10442673558 02Oct2014 100&lt;/P&gt;&lt;P&gt;10442673557 02Dec2014 100&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;proc sort data=have out=have2;&lt;BR /&gt;by tran_id tran_dt;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want2;&lt;/P&gt;&lt;P&gt;set have2;&lt;/P&gt;&lt;P&gt;by Tran_id Tran_dt;&lt;/P&gt;&lt;P&gt;array real(3) TRAN_ID TRAN_DT&amp;nbsp; amt;&lt;/P&gt;&lt;P&gt;array copy(3) tran_id2 tran_dt2 amt2;&lt;/P&gt;&lt;P&gt;retain copy;&lt;/P&gt;&lt;P&gt;if not last.Tran_id then do;&lt;/P&gt;&lt;P&gt;do i=1 to dim(copy);&lt;/P&gt;&lt;P&gt;copy(i)=real(i);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;if last.Tran_id then output;&lt;/P&gt;&lt;P&gt;keep tran_id2 tran_dt2 amt2;&lt;/P&gt;&lt;P&gt;format tran_dt2 date9.;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Dec 2014 08:37:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159535#M2917</guid>
      <dc:creator>naveen_srini</dc:creator>
      <dc:date>2014-12-22T08:37:21Z</dc:date>
    </item>
    <item>
      <title>Re: Finding second last Transaction for each customer id</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159536#M2918</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And if you want to just keep the names, not having to deal with renaming after in my previous:&lt;/P&gt;&lt;P&gt;proc sort data=have out=have2;&lt;/P&gt;&lt;P&gt;by tran_id tran_dt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want2;&lt;/P&gt;&lt;P&gt;set have2;&lt;/P&gt;&lt;P&gt;by Tran_id Tran_dt;&lt;/P&gt;&lt;P&gt;array real(3) TRAN_ID TRAN_DT&amp;nbsp; amt;&lt;/P&gt;&lt;P&gt;array copy(3) tran_id2 tran_dt2 amt2;&lt;/P&gt;&lt;P&gt;retain copy;&lt;/P&gt;&lt;P&gt;if not last.Tran_id then do;&lt;/P&gt;&lt;P&gt;do i=1 to dim(copy);&lt;/P&gt;&lt;P&gt;copy(i)=real(i);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;if last.Tran_id then do;&lt;/P&gt;&lt;P&gt;do i=1 to dim(copy);&lt;/P&gt;&lt;P&gt;real(i)=copy(i);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;keep TRAN_ID TRAN_DT&amp;nbsp; amt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Dec 2014 09:36:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Finding-second-last-Transaction-for-each-customer-id/m-p/159536#M2918</guid>
      <dc:creator>naveen_srini</dc:creator>
      <dc:date>2014-12-22T09:36:22Z</dc:date>
    </item>
  </channel>
</rss>

