我有一张不同来源的人员及其费用表。
name expenseid amount
mike 1 100
mike 2 200
nick 3 100
mike 4 500
peter 5 300
nick 6 150
… … …
对于每个人,我需要获得十大最昂贵的交易。这是我试过的。
proc sql;
select name, expenseid, amount
from table2
qualify row_number over(partition by expenseid order by amount desc) < 11
group by name;
quit;
但Sas无法识别row_number。我怎样才能改进它?
答案 0 :(得分:2)
PROC SQL不支持它。在SQL中有一个函数可以执行它,但我不认为它是官方支持的(即R&amp; D中的某个人将其投入)。因此,我会使用更传统的SAS方法。
PROC SORT data=table2;
by name descending amount;
run;
data table2(drop=count);
set table2;
by name;
retain count;
if first.name then
count = 0;
count = count + 1;
if count < 11;
run;