BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
PROCDATARUN
Obsidian | Level 7

Greetings SAS Experts,

Could you throw some help out here where the need is to assign page numbers based on occurrences?

Explanation: Input dataset has order details where the same set of Tracknumbers are repeated across SetNumbers for a given Order number.

The goal is to assign page number for the first 10 unique Tracknumbers and then push out the remaining Tracknumbers to the next page  2 but assigning them to the next available set number and so on until all tracknumbers are assigned to page

numbers for a given Ordernumber.

Example dataset below shows 12 unique track numbers for O123 Order, first 10 would go into its Page 1 assigned to SetN umber J001 and the remaining 2 on Page 2 but assigned to SetNumber J002.  Duplicate TrackNumbers assigned to SetNumber J002 should drop off as they were accounted for J001 Page number 1 for the given same order number O123.

Thanks a lot in advance for your help.

Input      DesiredOutput 
OrderNumberSetNumberTrackNumber SubGNumber OrderNumberSetNumberTrackNumber SubGNumberPageNumber
O123J001456YA O123J001456YA1
O123J001456YB O123J001456YB1
O123J001456YC O123J001456YC1
O123J0013284GA O123J0013284GA1
O123J0013284GB O123J0013284GB1
O123J0015657GA O123J0015657GA1
O123J001490456BB O123J001490456BB1
O123J001490456CC O123J001490456CC1
O123J001490456DA O123J001490456DA1
O123J001490EB O123J001490EB1
O123J001490FA O123J001490FA1
O123J001490GB O123J001490GB1
O123J001490HC O123J001490HC1
O123J001490IA O123J002490IA2
O123J001490JB O123J002490JB2
O123J002456YA O346J001456YA1
O123J002456YB O346J001456YB1
O123J002456YC O346J001456YC1
O123J0023284GA O346J0013284GA1
O123J0023284GB O346J0013284GB1
O123J0025657GA      
O123J002490456BB      
O123J002490456CC      
O123J002490456DA      
O123J002490EB      
O123J002490FA      
O123J002490GB      
O123J002490HC      
O123J002490IA      
O123J002490JB      
O346J001456YA      
O346J001456YB      
O346J001456YC      
O346J0013284GA      
O346J0013284GB      
          
1 ACCEPTED SOLUTION

Accepted Solutions
smantha
Lapis Lazuli | Level 10

My bad the last. should be last.track_number

 

proc sort data=input_data;

by OrderNumber SetNumber TrackNumber;

 

data output_data;

set input_data;

by OrderNumber SetNumber TrackNumber;

retain counter ;

if first.OrderNumber then counter=10;

if last.TrackNumber then counter=counter-1;

PageNumber=2;

if counter  > 0 then PageNumber=1;

run;

View solution in original post

3 REPLIES 3
smantha
Lapis Lazuli | Level 10
OrderNumberSetNumberTrackNumber SubGNumber

 

proc sort data=input_data;

by OrderNumber SetNumber TrackNumber;

 

data output_data;

set input_data;

by OrderNumber SetNumber TrackNumber;

retain counter ;

if first.OrderNumber then counter=10;

if last.OrderNumber then counter=counter-1;

PageNumber=2;

if counter  > 0 then PageNumber=1;

run;

 

PROCDATARUN
Obsidian | Level 7

Hi Smantha,

 

It did not seem to work, not sure how would the code in there would reset counter for tracknumbers.

 

smantha
Lapis Lazuli | Level 10

My bad the last. should be last.track_number

 

proc sort data=input_data;

by OrderNumber SetNumber TrackNumber;

 

data output_data;

set input_data;

by OrderNumber SetNumber TrackNumber;

retain counter ;

if first.OrderNumber then counter=10;

if last.TrackNumber then counter=counter-1;

PageNumber=2;

if counter  > 0 then PageNumber=1;

run;

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 592 views
  • 0 likes
  • 2 in conversation