2011-06-23 11 views
0

上の制限の結果、私は以下の表を持っている:SQL - グループ

Car  | color | year 
---------+----------+------ 
mercedes | blue  | 1991 
mercedes | yellow | 1993 
mercedes | blue  | 1996 
mercedes | red  | 1998 
renaud | blue  | 1991 
renaud | yellow | 1993 
renaud | blue  | 1996 
renaud | red  | 1998 

私は、各車種の最も古い年の行を取得することを可能にするクエリを探しています。この場合 は、それは私を与える必要があります。

Car  | color | year 
----------+-------+------ 
mercedes | blue | 1991 
renaud | blue | 1991 

を私が持っている(私は、GROUP BYを持つ+ LIMIT BY ORDERで試してみました....しかし、それは常に私は必要のない余分な行を追加します結果セットを反復処理してサブ結果を作成します)。

あなたは私がそれをどうやってできるか考えていますか?

お寄せいただきありがとうございます!選択ネストされた

Kheraud

+1

どのように1991青いメルセデスは1996年の青いメルセデスより "最近の"ですか?私はあなたが結果をグループ化しようとしている方法に従わない... – Yuck

+0

合意 - 例は間違っています... – Randy

+0

"最近の"の代わりに "最も古い"を意味しましたか?色が違う2台の車が、どちらかというともっと新しい(あるいは古いか、基準が本当に何であっても)ある場合、結果はどうなるでしょうか? – Josh

答えて

2

- このような何か:

select car, max(year) yr 
from mytable 
group by car 

これは、それぞれの車のための適切な年を提供します。その後、あなたは色を追加したい(...その車のためのその年における複数ある場合はどうするかを指定していない)

select a.car, a.color, a.yr 
from (
select car, max(year) yr 
from mytable 
group by car 
) a 
, mytable 
where mytable.car = a.car 
and mytable.year = a.yr 
0

選択車、色、最大(年)によるTABLE_NAME グループから車、色