2011-06-23 26 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 

我與ORDER試圖+進行限制,HAVING,GROUP BY ....但它隨時添加,我並不需要額外的行(我要迭代結果集以創建子結果)。

你有什麼想法我可以做到這一點?

非常感謝您的幫助提示!

Kheraud

+1

1991年的藍色梅賽德斯比1996年的藍色梅賽德斯更「近期」是怎麼樣的?我不關注你如何分組結果... – Yuck

+0

同意 - 示例不正確... – Randy

+0

你的意思是「最古老」而不是「更近」?如果兩輛不同顏色的汽車都來自同樣更新的(或更舊的或者真實的標準),那麼結果應該是什麼? – 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的 組由汽車,顏色