我的列名为id
和key
。我按id
对数据进行了排序,我需要获取每个id
的前5个键。
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 :(得分:3)
OUTOBS=
语句中的PROC SQL
选项适用于整个查询,因此在您的示例中,只返回五行。
以下代码应用计数器i
,每次遇到新的id
值时,该计数器都会重置。如果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;