将前 6 个支付字段记录显示为每个帐户的列
displaying top 6 payment field records as columns for each account
我有 table,其中包含他们各自上次付款的帐户字段。
例如
acc | lastpayment
1111 100.00
1111 150.00
1111 110.00
1112 111.00
1113 200.00
1114 300.00
这些记录将有重复项,因为它包含多次付款的帐户(例如,在上面的前 3 条记录中)。
我只想显示每个帐户的前 6 笔付款,然后将 table 列显示为
acc | lastpayment1 | lastpayment2 | lastpayment3 | lastpayment4 | lastpayment5 | lastpayment6
这可能吗?
如有任何帮助,我们将不胜感激
创建一个 view
以选择您想要的 'N' 行,每组,然后 TRANSPOSE
视图
data top6;
set have;
by acc;
if first.acc the seq = 1; else seq + 1;
run;
proc transpose data=top6 out=want;
by acc;
var lastpayment;
run;
或
创建包含数组和 DOW 循环的数据步骤视图
data want (keep=acc lastpayment1-lastpayment6) / view=want;
do _n_ = 1 by 1 until (last.acc);
set have;
by acc;
array payments lastpayment1-lastpayment6;
if _n_ <= dim(payments) then
payments(_n_) = lastpayment;
end;
run;
我有 table,其中包含他们各自上次付款的帐户字段。 例如
acc | lastpayment
1111 100.00
1111 150.00
1111 110.00
1112 111.00
1113 200.00
1114 300.00
这些记录将有重复项,因为它包含多次付款的帐户(例如,在上面的前 3 条记录中)。
我只想显示每个帐户的前 6 笔付款,然后将 table 列显示为
acc | lastpayment1 | lastpayment2 | lastpayment3 | lastpayment4 | lastpayment5 | lastpayment6
这可能吗?
如有任何帮助,我们将不胜感激
创建一个 view
以选择您想要的 'N' 行,每组,然后 TRANSPOSE
视图
data top6;
set have;
by acc;
if first.acc the seq = 1; else seq + 1;
run;
proc transpose data=top6 out=want;
by acc;
var lastpayment;
run;
或
创建包含数组和 DOW 循环的数据步骤视图
data want (keep=acc lastpayment1-lastpayment6) / view=want;
do _n_ = 1 by 1 until (last.acc);
set have;
by acc;
array payments lastpayment1-lastpayment6;
if _n_ <= dim(payments) then
payments(_n_) = lastpayment;
end;
run;