40 pts.
 Group By con ORDER By en V7R1
Hola, antiguamente en la V5R4, cuando escribiamos una sentencia SQl que utilizaba GROUP BY, el sistema solo ordenaba por los campos definidos dentro del GROUP BY, ahora , en la V7R1, no lo hace, y me obliga que escriba el ORDER BY y a continuacion los campos de Ordenamiento, cabe aclarar que el GROUP BY ordenado lo puedo hacer m oracle express, sqlserver express, sql de VFP y en todos los casos se ejecuta igual que en V5R4.
Alguien me podria confirmar esto, o es un problema con mi instalacion de V7R1 

Por favor, si me pueden contestar con copia a victor.velardez@gmail.com

Muchas Gracias 


Software/Hardware used:
i5 and V7R1
ASKED: August 23, 2012  6:58 PM

Answer Wiki:
Last Wiki Answer Submitted:  Be the first to answer this question.
All Answer Wiki Contributors:  Be the first to answer this question.
To see all answers submitted to the Answer Wiki: View Answer History.


Discuss This Question:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


 

26021962: Voy a traducir lo que me parece entender de tu pregunta al Inglés, ya que de lo contrario dudo mucho que recibas una respuesta.
Por otro lado, no enviamos respuestas a correo electrónico.  Todo se publica aquí en el sitio.

Saludos,

 63,535 pts.

 

Here’s the translated text:

“On V5R4, when we wrote queries that included the GROUP BY clause, the system automatically ordered the results by the columns included in the GROUP BY, but now in V7R1, it doesn’t, and I need to explicitly add an ORDER BY clause.  It is worth mentioning that this automatically ordered GROUP BY query can be done in Oracle express, SQL Server express, VFP, and it behaves as in V5R4.

Could someone please confirm if this is the new expected behavior ?  Or could it be a problem with my V7R1 installation ?

Thanks.”

 63,535 pts.

 

Thanks Carlos 

 32,785 pts.

 

Thanks Carlos
Everything between Hola and Muchas Gracias was a bit muddled. 
 
In V5R4 it certainly looks like it orders on the Group By.  That is until there is more than one group by field, then it seems to be rather random until the order by clause is used.  In general selects deliver the data in a random order. 
 
  Phil

 44,070 pts.

 

On V5R4 and every version and release, a result set only has a guaranteed order if an ORDER BY clause is specified. It is always possible for a result set to have an order that matches a GROUP BY, but it should always be considered a lucky accident.
 
And if it happens less under i 7.1, it’s most likely due to code changes to bring more of the SQL standard and new extensions into the product. It shouldn’t affect anything simply because statements should have always had an ORDER BY clause if ordering was desired.
 
Tom

 107,735 pts.

 

26021962, estas son las respuestas recibidas: Respuesta de philpl1jb:

En V5R4 ciertamente parece que el resultado se ordena por el GROUP BY.  Eso es así hasta que hay mas de un campo en el GROUP BY, entonces parece ordenar de forma aleatoria, hasta que la cláusula ORDER BY es usada.  En general, los SELECTS devuelven los datos en orden aleatorio.”

 Respuesta de TomLiotta:

En V5R4 y cualquier otra version, un resultado solamente tiene un order garantizado si una cláusula ORDER BY es especificada.  Siempre es posible que un resultado tenga un orden que concuerde con el GROUP BY, pero eso debería siempre se considerado como un accidente de suerte. 

Y si pasa menos en i 7.1, es muy probable que sea debido a cambios en el código para agregar mas del standard de SQL y nuevas extensiones al producto.  Esto no debería afectar nada, simplemente porque las sentencias siempre deberían haber tenido una clásula ORDER BY  si se deseaba recibir el resultado en un orden específico” 

————— 

Mi opinión personal:
Concuerdo con Phil y Tom.  Si un orden específico es necesario, entonces es una buena práctica siempre especificarlo por medio de un ORDER BY, aunque sin incluirlo el resultado sea devuelto en el orden deseado. 

En la compañía para la que yo trabajo se hizo una migración de Oracle 8i a 11g hace unos meses, y algunas aplicaciones tuvieron ciertos problemas porque las consultas que no tenían especificado un ORDER BY ahora en Oracle 11g devolvían el resultado en diferente orden.   

Lo correcto es anticiparse a ese tipo de cambios, y siempre especificar el orden requerido.

 63,535 pts.

 

My previous comment, which included Phil’s and Tom’s answers’ translation to Spanish seems to be in limbo.  It is visible from the outside but is missing here. :-(

 63,535 pts.