|
9#

楼主 |
发表于 2007-11-5 18:18:04
|
只看该作者
to zhoubin
我可是含着眼泪读完你的程序的,因为你的思路几乎与我一摸一样。哈哈哈 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
当然具体实现还是有一点点差别,既然有TX的程序与我的很接近了,那我先把我的程序贴出来。不过我坚信还有更高效的方法,只是我们还没有想到。希望大家继续讨论,再完善下去。这样的讨论一定能使我们的水平都得到提高的!
[code:3kbi7wyc]data c;
if 0 then set a;
if _n_=1 then do;
declare hash share(dataset:'work.a', ordered:'ascending');
share.definekey ('name', 'date');
share.definedata(all:'yes');
share.definedone();
end;
set b;
rc=share.find(key:name, key:sdate);
svalue=value;
rc=share.find(key:name, key:edate);
evalue=value;
tvalue=0;
do i=sdate to edate;
rc=share.find(key:name, key:i);
tvalue+value;
end;
keep name sdate edate svalue evalue tvalue;
run;[/code:3kbi7wyc]
我的程序在真实环境中测试,花了45分钟左右。 |
|