2012-07-29 18 views
0

我需要有關高級SQL查詢(MSSQL 2000)的幫助。從列中唯一的數據庫中獲取值並添加條件

我有一張名爲「結果」的表格,列出了100米和200米比賽時間的田徑運動。一個參賽者可以有幾個比賽時間,但我想只顯示每個參賽者每個參賽者的最佳時間。

結果表包含五列Result_id,athlete_id,result_time,result_date,event_code。因此,當列出值時,athlete_id必須是唯一的,result_time必須是最快(最低)的值。另外,我希望能夠選擇event_code應該是「= 1」還是「= 2」,因爲100和200米結果時間在同一個表中混合。

幾天前我問了一個類似的問題,但沒有event_code條件。

這是我們想出的答案。

select r.* 
from result r 
inner join (
    select athelete_id, min(result_time) as FastestTime 
    from result 
    group by athelete_id 
) rm on r.athelete_id = rm.athelete_id and r.result_time = rm.FastestTime 

任何想法如何將event_code條件添加到此代碼段?

回答

0

試試這個:

select r.* 
from result r 
inner join (
    select athelete_id, min(result_time) as FastestTime 
    from result 
    where event_code = 1 
    group by athelete_id 
) rm on r.athelete_id = rm.athelete_id and r.result_time = rm.FastestTime 
+0

非常感謝!偉大的作品 – Inzajt 2012-07-29 15:37:46

0

包含在子查詢的輸出的事件代碼。然後,你可以在同一時間顯示所有事件或選擇它們的外where子句:

select r.* 
from result r inner join 
    (select athlete_id, event_code, min(result_time) as FastestTime 
     from result 
     group by athlete_id, event_code 
    ) rm 
    on r.athelete_id = rm.athlete_id and 
     r.result_time = rm.FastestTime and 
     r.event_code = rm.event_code 
-- where event_code = xx 

最後一行是可選凡在case子句你想在同一時間只有一個事件。

+0

謝謝!似乎工作,但發現在我的情況下,其他方法更容易 – Inzajt 2012-07-29 15:37:20

相關問題