ID LineNum Date
123 12 30JAN2016
123 15 30JAN2016
123 21 25JAN2016
如何獲得ID其中date是MAX和LINENUM該特定日期應該是最大, 在上表中最大日期是30JAN2016併爲15最大,
輸出應該是: 123 15 30JAN2016
ID LineNum Date
123 12 30JAN2016
123 15 30JAN2016
123 21 25JAN2016
如何獲得ID其中date是MAX和LINENUM該特定日期應該是最大, 在上表中最大日期是30JAN2016併爲15最大,
輸出應該是: 123 15 30JAN2016
我建議訂貨數據和選擇第一行。在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;
在SAS,假設你的日期變量是數字,你可以做一個按id,日期和亞麻布進行排序,然後選擇datastep中的最後一條記錄。
proc sort data=in; by id date linenum; run;
data out;
set in;
by id;
if last.id;
run;
這會給每ID
一行與max
日期和最大linenum
這將爲每個ID輸出一條記錄。我不清楚這是否是OP想要的。 – Quentin
SAS PROC SQL:
proc sql;
select * from have group by id having date=max(date) and linenum=max(linnum);
quit;
我想你想要什麼每個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
說明:
這與SAS有什麼關係?現在我將刪除標籤。 – mathguy
你試過什麼代碼? – Tom
嘗試將子查詢作爲下面的第一個答案,但認爲會有一個更簡單的解決方案。 –