Return 每组最近日期的观察

Return Observation With Most Recent Date in each group

我已经尝试了以下代码,不幸的是它在几个地方被抽查了,但不是全部。

proc sql;
create table AgedPrep AS
SELECT * , MAX(report_date) AS Latest_dt format date9.
FROM WORK.What_We_Have 
GROUP BY Name 
;
quit;


proc sql;
create table Aged_Want AS
SELECT * 
FROM WORK.AgedPrep
Where Latest_dt = report_date
;
quit;

我们有以下数据

  Name  Report_Date  Outcome
  Brian  11/12/13    good
  Brian  11/14/14    bad
  sussie  9/12/20    good
  sussie  12/11/19   bad

我们想要以下内容

  Name  Report_Date  Outcome
  Brian  11/14/14    bad
  sussie  9/12/20    good

非常经典 select 仅包含每组最新日期的行。我以前弄对了,但现在好像弄不明白了。

在此先感谢您的帮助

这是一个使用基本 SAS 代码的简单版本。

proc sort data=have;
   by name descending report_date;

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


使用 having 子句和 SAS SQL 自动重新合并。当存在 GROUP BY

时,将按组应用逻辑

示例:

  create table want AS
  SELECT *
  from have
  group by name
  having report_date = max(report_date)