2012-08-10 44 views
0

我有如下表:SQL服務器獲得最大

ID Date FirstName Dept 
1 1/2/12 James  Act 
1 2/5/12 Mike  IT 
2 5/6/12 Joe  HR 
2 7/6/12 Keith  IT 

我需要做的,對於每個ID是什麼,我需要得到最大的日期。 我需要爲每個具有最大日期的ID顯示ID,日期,名字,部門記錄。 所以在這種情況下ID爲1,我會顯示1 2/5/12 Mike IT 如何在SQL Server T-SQL中執行此操作?我知道我需要做羣組。

表名是TblAct

回答

2

您將使用MAX()功能與GROUP BY

select t1.id, t1.date, t1.fname, t1.dept 
from tblAct t1 
inner join 
(
    SELECT Max(Date) maxdate, ID 
    from TblAct 
    GROUP BY id 
) t2 
    on t1.id = t2.id 
    and t1.date = t2.maxdate 

SQL Fiddle with Demo

+0

bluefoot,請看看我修改了什麼。謝謝 – 2012-08-10 00:53:55

+0

@NathanP看我的編輯 – Taryn 2012-08-10 00:55:03

+0

有沒有辦法做到這一點在選擇vs內聯合? – 2012-08-10 00:57:50

0

您可以使用Windows /排序功能做到這一點:

select ID, Date, FirstName, Dept 
from (select t.*, 
      row_number() over (partition by id order by date desc) as seqnum 
     from t 
    ) t 
where seqnum = 1 

這是訂購所有按日期排序每個id的行,順序相反。然後選擇其中的第一個。

0

不使用group by:

select * from tblAct t1 
where date=(select max(date) from tblAct where t1.id = id) 

只是享受。