data taski(keep=n task_id_i) taskj(keep=n task_id_j);
SET task2;
by task_id_i;
if first.task_id_i then n+1;
else n=n;
run;
proc sort data=taski out=taski4 nodup;
by task_id_i n;
run;
data taskj(rename=(task_id_j=task_id_i));
set taskj;
run;
data task_x;
set taskj taski4;
by n task_id_i;
run;