отображение 6 лучших записей полей платежей в виде столбцов для каждой учетной записи - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть таблица, которая содержит поле счета их соответствующих последних платежей. например.

acc | lastpayment
1111  100.00
1111  150.00
1111  110.00
1112  111.00
1113  200.00
1114  300.00

Эти записи будут иметь дубликаты, так как будут содержать учетные записи, которые имели несколько платежей (например, в приведенных выше трех лучших записях).

Я хочу отображать только первые 6 платежей по каждому счету, а затем отображать столбцы таблицы как

acc | lastpayment1 | lastpayment2 | lastpayment3 | lastpayment4 | lastpayment5 | lastpayment6 

Возможно ли это?

Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 24 апреля 2019

Создайте 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;
...