将前 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;