2012-03-26 24 views
2

私は内部結合を行った後にグループの最新レコードを探しています。グループの最新のレコードを取得する

は、私は次の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関数を使って実現できますが、望みの結果が得られないようです。あなたのテーブルがabと呼ばれていると仮定すると、

答えて

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

0

、これを試してみてください。

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

SQLのフィドルを持つ2つある場合でも、すべてのコードを1つの結果だけを選んでいます(http://sqlfiddle.com/#!3/b9df9/1)。 –

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 
関連する問題