2016-07-14 53 views
0

我的問題是,我堅持這個我猜想簡單的問題。 現在2晚上Grrr ... 我創建了一個小例子來保持它簡單:得到最新(日期)排組

源表看起來像這樣:一些obj與一些隨機狀態。 這些狀態可以通過插入新行來更改/更新。

Id | obj| status | date 
---+----+--------+----- 
1 | 1 | green | 2013 
2 | 1 | green | 2014 
3 | 1 | yellow | 2015 
4 | 1 | orange | 2016 <- Last status of 1 
5 | 2 | green | 2013 
6 | 2 | green | 2014 <- Last status of 2 
7 | 3 | green | 2010 
8 | 3 | red | 2012 <- Last status of 3 

我需要得到這樣的輸出:

obj| status | date 
---+--------+----- 
1 | orange | 2016 
2 | green | 2014 
3 | red | 2012 

文本:輸出顯示ECH obj的最新狀態。

我希望有人能幫助我..

+0

這似乎是http://stackoverflow.com/q/12102200/1324815的副本。請注意,我強烈建議使用[左外連接答案](http://stackoverflow.com/a/28090544/1324815)而不是該帖子上的選定答案。通過正確的索引,它幾乎總是更高效。 –

回答

0

where子句中一個簡單的相關子查詢的伎倆:

select obj, status, date 
from t 
where t.date = (select max(t2.date) from t t2 where t2.status = t.status); 
+0

謝謝:) 我沒有那麼容易 - 教訓:) –

0

選擇OBJ,狀態,日期 在t 其中t.date = (從t t2選擇max(t2.date),其中t2.Obj = t.Obj);