| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> SQL question: GROUP BY and MAX
I have the following table:
select * from revisions
order by firstid, rev;
id firstid rev name
----------- ----------- ----------- ----
100 100 0 Donald
101 100 1 Donald D.
103 100 2 Donald Duck
102 102 0 Mickey
104 102 1 Mickey Mouse
105 105 0 Charlie Brown
I want for each firstid the row that has the highest rev value. The
desired result set is:
id firstid rev name
----------- ----------- ----------- ----
103 100 2 Donald Duck
104 102 1 Mickey Mouse
105 105 0 Charlie Brown
In Sybase, but not in Oracle, I can write:
select *
from revisions
group by firstid
having rev = max(rev)
For Oracle, I kindly got the following solution in the Oracle newsgroup,
but unfortunately it does not work in Sybase:
select b.*
from revisions b,
(select firstid, max(rev) maxrev
from revisions group by firstid) a
where b.firstid = a.firstid
Any idea how to write this with such SQL that is good for both DBMSs?
Matti Received on Fri May 18 2001 - 10:12:42 CDT
![]() |
![]() |