2012-09-17 72 views
1

這裏是我的SQL Server表在最大日返回值特定ID

ID  Date  Value 
___  ____  _____ 
3241  9/17/12 5 
3241  9/16/12 100 
3241  9/15/12 20 
4355  9/16/12 12 
4355  9/15/12 132 
4355  9/14/12 4 
1234  9/16/12 45 
2236  9/15/12 128 
2236  9/14/12 323 
2002  9/17/12 45 

這似乎是它應該是很容易做到的,但我不知道爲什麼我卡住了。我想選擇最大(日期)和每個ID最大(日期)的值。我想忽略關於每個ID不是最大(日期)的所有其他日期。

這裏是想我的表是這樣的:

ID  Date  Value 
___  ____  _____ 
3241  9/17/12 5 
4355  9/16/12 12 
1234  9/16/12 45 
2236  9/15/12 128 
2002  9/17/12 45 

我試着組通過使用MAX(日期),但它沒有任何團體。我不確定我做錯了什麼。先謝謝您的幫助!

回答

6

您可以使用以下方法:

select t1.id, t2.mxdate, t1.value 
from yourtable t1 
inner join 
(
    select max(date) mxdate, id 
    from yourtable 
    group by id 
) t2 
    on t1.id = t2.id 
    and t1.date = t2.mxdate 

Demo

+0

這是完美的。感謝bluefeet! –

+0

@DeronS你還需要解釋這是如何工作的? – Taryn

+0

不好意思。這對我來說完全有意義。我最初困惑於如何將內部聯接應用到數據透視表中,但我將它們都包裝在一個子查詢中,並且全部解決了。 –

1

這會給你你需要的東西:

SELECT 
    m.ID, 
    m.Date, 
    m.Value 
FROM 
    myTable m 
    JOIN (SELECT ID, max(Date) as Date FROM myTable GROUP BY ID) as a 
    ON m.ID = a.ID and m.Date = a.Date 
+0

這同樣適用。感謝Vikdor。 –