2014-05-09 4 views
0

나는 idkey이라는 열을 가지고 있습니다. 나는 데이터를 id에 의해 분류했고 모든 id의 처음 5 개의 키를 얻어야합니다. 당신이 다섯 행이 반환 얻을 것입니다 귀하의 예를 너무ID로 정렬 및 필터링

PROC SQL OUTOBS=5; 
    CREATE TABLE WORK.QUERY_001 AS 
    SELECT DISTINCT t1.*  
     FROM work.DATA t1 
     ORDER BY t1.id, 
       t1.key DESC; 
QUIT; 
+0

, 내가 얘기를 깜빡 했네요,이 SAS 매크로와 아무 상관이있다! – mjsqu

답변

3

당신의 PROC SQL 문에 OUTOBS= 옵션은 전체 쿼리에 적용됩니다.

다음 코드에서는 id 값이 발생할 때마다 다시 설정되는 카운터 i을 적용합니다. i 값이 다음 행이 새로운 데이터 세트에 기록됩니다 5 이하 (각 id에 대한 즉 처음 다섯 행) 인 경우 : 또한

 
proc sort data=data; 
    by id descending key; 
run; 

data query_001 (drop=i); 
    set data; 
    by id descending key; 
    if first.id then i=0; 
    i+1; 
    if i <=5; 
run;