Cynthia, thank you so much for responding so quickly! I work at a bank and the report shows product codes and how accounts under each product were converted to different products over time. For example, some accounts with the FC product, Free Checking, may have been converted to PC, premium checking, or SC, student checking.
Note: I had the New and Old data backwards, it should be as is below. For the first version, the product description would need to be able to span several columns. I understand now how this could not work. So, the second version could work. The output destination is PDF.
I couldn't create the report with PReport alone, so I had to create and merge different datasets together and sort in a specific order. Since everything is already grouped and ordered I cannot use 'order' or 'group' with Product in a define statement, hence my problem. My code is below. Everything works, I just need to put the Product description somewhere other than where the product code is now, where there is enough room.
________Dec'09_______________________Mar'10___________
Product___#Accts___Balance_____Product___#Accts___Balance
FC_________8000___$100000______FC______7950____$90000
Free Checking ___________________PC_______25____$50000
________________________________SC_______25____$50000
Free Checking
FC_________8000___$100000______FC______7950____$90000
________________________________PC_______25____$50000
________________________________SC_______25____$50000
proc report data=report2 split="*" nowindows HEADSKIP HEADLINE;
by service ; /*services are Checking, Savings, Money Market*/
column service
old_product
old_TOTAL_accts
old_balance_total
old_balance_avg
old_profit_total
old_profit_avg
status /*this and rstatus were used to order and group the datasets*/
RSTATUS
cur_product
current_total_accts
current_balance_total
current_balance_avg
current_profit_total
current_profit_avg
prcnt_change ;
define service / order noprint;
define old_product / display 'Product' width=12 style(COLUMN)={font_weight=bold};
define old_total_accts / format=comma. '# of Accounts' width=10;
define old_balance_total / format=dollar16. 'Total Balance';
define old_balance_avg / format=dollar12. 'Avg. Balance' width=10;
define old_profit_total / format=dollar16. 'Total Profit';
define old_profit_avg / format=dollar12. 'Avg. Profit' width=10 ;
define status / computed display noprint ;
define rstatus / '' width=12 style(COLUMN)={font_weight=bold font_size=8pt};;
define cur_product / 'Product' width=12 style(COLUMN)={font_weight=bold};
define current_total_accts / format=comma. '# of Accounts';
define current_balance_total / format=dollar16. 'Total Balance';
define current_balance_avg / format=dollar12. 'Avg. Balance' width=10;
define current_profit_total / format=dollar16. 'Total Profit';
define current_profit_avg / format=dollar12. 'Avg. Profit' width=10;
define prcnt_change / format=percent11.2 '%Retained*Moved*Lost' ;
compute status;
if status=3 then do;
call define(_row_,"style","style=[font_weight=bold background=light_grey]");
end;
endcomp;
break after service / page;
rbreak after / ol;
run;
... View more