DATA Step, Macro, Functions and more

Get maximum value without sorting

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Get maximum value without sorting

[ Edited ]

account numbers are shown in Acct ndate is the sasdate for the salary drawn

i want to create a variable with the last drawn salary month

i have tried

proc sort data=bank.dates out=bank.aa;
by Acct ndate;
run;
proc print;run;

data bank.salmnth;
set bank.aa;
by Acct ndate;
if last.Acct then lastmonth=PUT(ndate,monname.);
run;
proc print;run;

what is the alternative for if last.Acct then lastmonth=PUT(ndate,monname.); in data step without proc sort?

 


Accepted Solutions
Solution
‎11-15-2016 02:46 PM
Respected Advisor
Posts: 4,651

Re: Get maximum value without sorting

It depends on the sorting of bank.dates and the indexes defined on that table. You can let SQL figure that out with:

 

proc sql;
create table bank.salmnth as 
select *, put(nDate, monName.) as lastMonth
from bank.dates
group by Acct
having nDate=max(nDate);
quit;
PG

View solution in original post


All Replies
Solution
‎11-15-2016 02:46 PM
Respected Advisor
Posts: 4,651

Re: Get maximum value without sorting

It depends on the sorting of bank.dates and the indexes defined on that table. You can let SQL figure that out with:

 

proc sql;
create table bank.salmnth as 
select *, put(nDate, monName.) as lastMonth
from bank.dates
group by Acct
having nDate=max(nDate);
quit;
PG
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 221 views
  • 0 likes
  • 2 in conversation