繁体   English   中英

在SAS PROC SQL中选择DISTINCT ON

[英]SELECT DISTINCT ON in SAS PROC SQL

我该如何选择ALL ROWS,并且在哪里存在一个行,然后再选择一次,(基于ID)只需取一个(与哪一个无关)。

所以我有:

ID name val
===========
1 | aa | 32
2 | aa | 32
3 | ad | 32
3 | zy | 11
4 | rr | 21
5 | oi | 44
5 | df | 11

结果应该是

ID name val
===========
1 | aa | 32
2 | aa | 32
3 | zy | 11
4 | rr | 21
5 | df | 11   

5 | df | 11没关系 5 | df | 11 5 | df | 115 | oi | 44 5 | oi | 44 5 | oi | 44

在Postgres上, SELECT DISTINCT ON ID选择范围是我的选择。

提前谢谢了

最方便的方法是使用Proc Sort:

PROC SORT DATA=HAVE OUT=WANT NODUPKEY;
BY ID;
RUN;

否则,如果它是预先排序的,则@Reeza的解决方案很好。 如果您必须使用Proc SQL,则可能需要实现一个未添加的功能:monotonic():

PROC SQL;
CREATE TABLE WANT AS
SELECT * FROM HAVE
GROUP BY ID
HAVING MONOTONIC()=MIN(MONOTONIC());
QUIT;

SAS数据步骤答案,使用优先/最后处理

data want;
  set have;
  by id;
  if first.id;
 run;

使用proc sql:

proc sql;

select id, max(name) as maxName, val
from work.table
group by id, val;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM