2013-10-23 51 views
1

我有兩張表,學生和school_year。加入最高值的Oracle

students 
--------- 
ID Name 
--------- 
1 ABC 
2 XYZ 

school_year 
----------- 
ID student_id grade year 
-------------------------- 
1 1   5  2011 
2 1   6  2012 
3 2   1  2010 
4 2   2  2011 
5 2   3  2012 

我加入他們的行列,並得到這樣的結果

select s.*, sy.grade, sy.year 
from students s 
left join school_year sy 
on s.id=sy.student_id 
order by s.name 

,我得到這樣的結果

id name  grade year 
--------------------------- 
1 ABC  5  2011 
1 ABC  6  2012 
2 XYZ  1  2010 
2 XYZ  2  2011 
2 XYZ  3  2012 

我想加盟學年表,其中品位最高/最高爲學生所以桌子看起來像這樣。

id name  grade year 
------------------------- 
1 ABC  6  2012 
2 XYZ  3  2012 

請幫忙。謝謝。

回答

2

嘗試了這一點:

SELECT s.id, s.name, sy1.grade, sy1.year FROM school_year sy1 
LEFT JOIN school_year sy2 
    ON sy1.student_id = sy2.student_id AND sy1.grade < sy2.grade 
JOIN students s ON sy1.student_id = s.id 
WHERE sy2.grade IS NULL 

小提琴here

+1

非常感謝Mosty Mostacho。有用。 – riz

+0

太好了。歡迎:) –