我尝试了以下代码,但不幸的是,它在少数几个地方进行了检查,但并非全部。
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
非常经典,每个组仅选择日期最近的行。我以前已经正确了,但现在似乎无法理解。
在此先感谢您的帮助
答案 0 :(得分:0)
这是使用基本SAS代码的简单版本。
proc sort data=have;
by name descending report_date;
data want;
set have;
by name;
if first.name;
run;
答案 1 :(得分:0)
使用having
子句和SAS SQL自动重新合并。当存在GROUP BY
示例:
create table want AS
SELECT *
from have
group by name
having report_date = max(report_date)