2012-03-26 130 views
2

我試圖在進行內部聯接後找到組的最新記錄。獲取組的最新記錄

說我有以下兩個表:

dateCreated | id 
2011-12-27 | 1 
2011-12-15 | 2 
2011-12-17 | 6 
2011-12-26 | 15 
2011-12-15 | 18 
2011-12-07 | 22 
2011-12-09 | 23 
2011-12-27 | 24 


    code  | id 
    EFG  | 1 
    ABC  | 2 
    BCD  | 6 
    BCD  | 15 
    ABC  | 18 
    BCD  | 22 
    EFG  | 23 
    EFG  | 24 

我想只顯示最近的分組:

那麼結果將是:

dateCreated | code 
2011-12-27 | EFG 
2011-12-15 | ABC 
2011-12-26 | BCD 

我知道這可以通過使用maxgroup by函數來實現,但我似乎無法獲得理想的結果。

回答

3

我想這應該讓你有:

select max(a.dateCreated) as dateCreated 
    , b.code 
from table1 a 
    join table2 b on a.id = b.id 
group by b.code 
+0

是的,所有我需要歡呼,我會標記它是正確的,當它讓我 – user1186144 2012-03-26 16:24:45

0

假設你的表被稱爲ab,試試這個:

select max(a.dateCreated) as dateCreated, b.code 
from a join b on a.id = b.id 
group by b.code 
+0

的Sql小提琴[這裏] (http://sqlfiddle.com/#!3/b9df9/1)。 – 2012-03-26 16:30:47

0

您可以使用分析功能這一點。這樣一來,你還是選擇只有一個結果,每代碼,即使它們是兩個具有相同最後dateCreated(這可能會或可能不是你真正想要的結果)

SELECT Code, dateCreated 
FROM ( SELECT T2.Code, T1.dateCreated, ROW_NUMBER() OVER(PARTITION BY T2.Code ORDER BY T1.dateCreated DESC) Corr 
     FROM Table1 T1 
     INNER JOIN Table2 T2 
     ON T1.id = T2.id) A 
WHERE Corr = 1