@Reeza wrote:
Unfortunately PROC SQL does not support variable lists.
Since your summation is the values in a row, you can consider a data step instead.
data want;
set sample;
sumeq15=sum(stat1, stat2, stat3);
sumeq9=sum(of stat1--stat3);
sumeqerror=sum(of stat;
run;
ok...thanks. I worked around it with a macro (see below) so I didn't need to add an extra variable in the data set, but was hoping there was a simpler solution
%macro sum1;
%do n=1 %to 3;
,stat&n
%end;
%mend sum1;
proc sql;
select
SUM(0 %sum1) as SumByRow
from sample;
select
SUM(SUM(0 %sum1) as SumAcrossAllRows
from sample;
quit;
And @PGStats wrote:
As an alternative, you can transpose first and get closer to a mormalized data structure, and then use SQL :
data sample;
id = 1;
stat1 = 10;
stat2 = 4;
stat3 = 1;
run;
proc transpose data=sample out=sampleList;
by id;
var stat:; /* Or stat1 - stat3, or stat1 -- stat3 */
run;
proc sql;
create table want as
select id, sum(col1) as sumEQ
from sampleList
group by id;
quit;
proc print data=want noobs; run;
... View more