SQL query with GROUP BY clause in Oracle 8i vs. Oracle 10g
SearchOracle.com
I have one SQL query using a GROUP BY clause and no ORDER BY clause is used. When executed in Oracle 8i, the query results are returned ordered by first column mentioned in the GROUP BY clause. When the same query is executed in Oracle 10g, the query results are returned withour ordering the data by the first column in the GROUP BY clause. It works only when I explicitly mention the ORDER BY clause. Can you please explain this? In Orcale 8i, is it that, by default, the data is ordered by the first column mentioned in the GROUP BY clause when ORDER BY clause is not mentioned?
Oracle never guarantees the ordering of your result set unless you include an ORDER BY clause. You are seeing a change in the algorithm of how Oracle internally codes the GROUP BY clause between the versions. This can happen between versions. So if you want your data sorted, include the ORDER BY clause.
Oracle White Papers: Fusion Middleware