2016-08-30 24 views
-1

表A獲取,最大日期和max還有一列中的數據在SAS

ID LineNum Date 
123 12  30JAN2016 
123 15  30JAN2016 
123 21  25JAN2016 

如何獲得ID其中date是MAX和LINENUM該特定日期應該是最大, 在上表中最大日期是30JAN2016併爲15最大,

輸出應該是: 123 15 30JAN2016

+0

這與SAS有什麼關係?現在我將刪除標籤。 – mathguy

+0

你試過什麼代碼? – Tom

+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; 
0

在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

+0

這將爲每個ID輸出一條記錄。我不清楚這是否是OP想要的。 – Quentin

0

SAS PROC SQL:

proc sql; 
    select * from have group by id having date=max(date) and linenum=max(linnum); 
quit; 
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 

說明:

  1. 您首先選擇每個ID(第一個子查詢)的最大日期。
  2. 然後,您爲每個ID和日期(第二個子查詢)選擇最大行號。
  3. 通過加入它們,您將獲得最大日期以及最大LineNum的行!
相關問題