Sql SAS-跨数据复制帐号
我有这样一个数据集:Sql SAS-跨数据复制帐号,sql,sas,proc-sql,Sql,Sas,Proc Sql,我有这样一个数据集: AcntNum name date 100 abc 12/01 abc2 12/02 abc3 12/03 101 abc4 12/04 abc5 12/05 abc6 12/06 我正在尝试完成以下结果数据集: 结果: 请建议采用什么方法 谢谢,可能有更好的方法,但您可以尝试以下方法: data raw1;
AcntNum name date
100 abc 12/01
abc2 12/02
abc3 12/03
101 abc4 12/04
abc5 12/05
abc6 12/06
我正在尝试完成以下结果数据集:
结果:
请建议采用什么方法
谢谢,可能有更好的方法,但您可以尝试以下方法:
data raw1;
set raw ;
retain group;
if( _n_ = 1) then group = 0;
if (acct ne .) then group = group +1;
run;
data raw2;
set raw1;
retain acct2;
by group;
if first.group then acct2 = acct;
run;
您需要使用RETAIN和另一个变量。这里有一个方法
data want;
set have;
retain acntnum2;
acntnum=coalesce(acntnum,acntnum2);
acntnum2=acntnum;
run;
第一个结果集看起来像带有合并单元格的报表。日期总是在分组中递增吗?因此没有100 12/07因为本机proc sql中的限制,这在数据步骤中更容易完成-除非数据已经在数据库中。请展示您尝试过的内容。正如@Gordon所指出的,数据步骤的答案可能更简单,你对此持开放态度吗?是的,我可以使用数据步骤。我能用比我的答案好得多的保留语句吗
data want;
set have;
retain acntnum2;
acntnum=coalesce(acntnum,acntnum2);
acntnum2=acntnum;
run;