| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> SQL question: SELECT and GROUP BY in Oracle8
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 I can write:
select *
from revisions
group by firstid
having rev = max(rev)
But this does not work in Oracle, probably because having more columns in the select list than is in the GROUP BY clause is a Sybase extension. If I put all columns in SELECT and GROUP BY statements, I naturally get all rows.
Any idea how to write this SQL for Oracle?
Matti Received on Thu May 17 2001 - 07:30:30 CDT
![]() |
![]() |