2014-09-18 98 views
1

我有一個人和他們來自不同來源的費用表。SAS sql。如何使用行列sas sql?

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; 

但是,row_number不被Sas識別。我該如何改進它?

+0

單調函數提供了行號,但它不受支持並且不被推薦。 – Reeza 2014-09-19 02:09:17

回答

2

它不被PROC SQL支持。有一個功能可以在SQL中完成,但我認爲它不是官方支持的(即有人在R & 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;