Going with your Proc SQL approach, I would combine the stats already in the Proc SQL into a single var so Proc REPORT will just do the display.
Here is an example
proc sql;
create table result as
select
"MSRP" as characteristic
, origin
, "mean (std)" as value
, cats(mean(msrp), "(", std(msrp), ")") as cell
from
sashelp.cars
group by
origin
union
select
"MSRP" as characteristic
, origin
, "median (range)" as value
, cats(median(msrp), "(", catx(" ", min(msrp), max(msrp)), ")") as cell
from
sashelp.cars
group by
origin
union
select
"MSRP" as characteristic
, "Total"
, "mean (std)" as value
, cats(mean(msrp), "(", std(msrp), ")") as cell
from
sashelp.cars
union
select
"MSRP" as characteristic
, "Total"
, "median (range)" as value
, cats(median(msrp), "(", catx(" ", min(msrp), max(msrp)), ")") as cell
from
sashelp.cars
;
quit;
proc report data=result;
column characteristic value Origin, cell;
define characteristic / group ;
define value / group ;
define origin / across ;
define cell / group " " style={textalign=right};
run;
... View more