BookmarkSubscribeRSS Feed
pw7632
Calcite | Level 5

SELECT DISTINCT 

  "player_id", 

  FIRST_VALUE("dob") OVER (PARTITION BY "player_id" 

                           ORDER BY "player_id" ASC, 

                                    "completion_dte" DESC, 

                                    "plan" ASC 

                           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS "dob",

 

I am trying to figure out this code but it was not done with PROC SQL. Does anyone know what this statement is doing/how would it translate to SAS. Thanks! 

 

 

2 REPLIES 2
AndyBeans
Calcite | Level 5
If this is MS SQL Server that takes the first observation for each player_id, according to the sort order after the ORDER BY statement.

An equivalent in SAS would be a "first." operation on a sorted datastep, like:

PROC SORT DATA=DS1
BY player_id DESCENDING completion_dte plan;
RUN;
DATA DS2;
SET DS1;
BY player_id DESCENDING completion_dte plan;
if first.player_id then output;
RUN;

I might have the "DESCENDING" in the wrong place, I usually do.
bobpep212
Quartz | Level 8
Pretty sure you got the descending in the right spot. I'm just trying to figure out how a player_id could have two different DOBs, unless they aren't talking about dates of birth.

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1692 views
  • 1 like
  • 3 in conversation