似乎和楼主的要去不同,我觉得应该这样
data b(drop=sum);
set a;
by Category;
if first.Category then sum=0;
sum+value1;
value2=sum-value1/2;
run;
或者
data b(drop=sum);
set a;
by Category;
if first.Category then sum=0;
value2=sum+value1/2;
sum+value1;
run;
bobguy 发表于 2011-7-11 00:38 
tj0412ymy 发表于 2011-7-10 23:54 
honghejing 发表于 2011-7-10 22:17 
data b;
set a;
retain c 0;
if first.a then c=value1;
else c+value1;
value2=c+1/2*value1;
run;
run;
非常感谢给予解答,略做修改后的正解为:
data b;
set a;
by Category;
retain c 0;
if first.Category then c=value1;
else c+value1;
value2=c-1/2*value1;
run;
simplified a little,
data b;
set a;
by Category;
if first.Category then value2=0;
value2+0.5*value1;
run;