表A
ID LineNum Date
123 12 30JAN2016
123 15 30JAN2016
123 21 25JAN2016
如何获取DATE为MAX的ID,该特定日期的LineNum应为max, 在上表中,最大日期为30JAN2016,其中15为最大值,
输出应该是: 123 15 30JAN2016
答案 0 :(得分:1)
我建议订购数据并选择第一行。在Oracle中,传统上写为:
select a.*
from (select a.*
from tablea a
order by date desc, linenum desc
) a
where rownum = 1;
在Oracle 12c +中,您可以更简单地将其写为:
select a.*
from tablea a
order by date desc, linenum desc
fetch first 1 row only;
答案 1 :(得分:0)
在SAS中,假设您的日期变量是数字,您可以按id,date和linenum进行proc排序,然后选择datastep中的最后一条记录。
proc sort data=in; by id date linenum; run;
data out;
set in;
by id;
if last.id;
run;
这将为每ID
个max
日期和最大linenum
答案 2 :(得分:0)
SAS proc sql:
proc sql;
select * from have group by id having date=max(date) and linenum=max(linnum);
quit;
答案 3 :(得分:0)
我认为你想要的是每个ID的最大日期,这可以通过以下查询来执行:
select *
from
(select ID, max(Date) maxDate
from table
group by ID) a join (
select ID, Date, max(LineNum) maxLineNum
from table
group by ID, Date
) b
On a.ID = b.ID AND a.maxDate = b.Date
解释: