SQL - AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQL

 
Vista:

AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQL

Publicado por DBAMASTER (20 intervenciones) el 09/03/2007 06:22:45
Tengo un problema con una consulta sql que no encuentro la forma de cómo solucionar.
Supongamos que tengo una tabla como la siguiente:

Registro--|---Campo1--|---Campo2--|---Campo3
----------|-----------|-----------|---------
----1-----|---datoD---|-----6-----|-----1---
----2-----|---datoC---|-----3-----|-----3---
----3-----|---datoB---|-----6-----|-----2---
----4-----|---datoD---|-----2-----|-----2---
----5-----|---datoB---|-----4-----|-----1---
----6-----|---datoC---|----10-----|-----1---
----7-----|---datoC---|-----8-----|-----2---
----8-----|---datoA---|-----3-----|-----2---
----9-----|---datoA---|-----2-----|-----3---

y quiero obtener esos mismos datos pero ordenados de la siguiente manera:

Registro--|---Campo1--|---Campo2--|---Campo3
----------|-----------|-----------|---------
----2-----|---datoC---|-----3-----|-----3---
----7-----|---datoC---|-----8-----|-----2---
----6-----|---datoC---|----10-----|-----1---
----9-----|---datoA---|-----2-----|-----3---
----8-----|---datoA---|-----3-----|-----2---
----3-----|---datoB---|-----6-----|-----2---
----5-----|---datoB---|-----4-----|-----1---
----4-----|---datoD---|-----2-----|-----2---
----1-----|---datoD---|-----6-----|-----1---

Es decir:
primero, buscar los datos de Campo3 de mayor a menor que tengan el Campo2 con valor más grande, por ejemplo el primer registro serìa el numero 2 con Campo1=datoC, Campo2=3 y Campo3=3 porque 2 es el mayor en Campo3 y 3 es el mayor en Campo2.

Luego, agregar los registros que en Campo3son menores sin importar el valor que tengan en Campo2.

De otra forma, todo el proceso se puede ver como:
paso 1: Obtener los datos con Campo3 mayor

Registro--|---Campo1--|---Campo2--|---Campo3
----------|-----------|-----------|---------
----2-----|---datoC---|-----3-----|-----3---
----9-----|---datoA---|-----2-----|-----3---

en este caso sería el registro 2 y 9 porque 3 es el mayor en la columna Campo3

paso2: Intercalar los registros en forma descendente con respecto a Campo3 pero con Campo1 iguales

Registro--|---Campo1--|---Campo2--|---Campo3
----------|-----------|-----------|---------
----2-----|---datoC---|-----3-----|-----3---
----7-----|---datoC---|-----8-----|-----2---
----6-----|---datoC---|----10-----|-----1---

----9-----|---datoA---|-----2-----|-----3---
----8-----|---datoA---|-----3-----|-----2---

----3-----|---datoB---|-----6-----|-----2---
----5-----|---datoB---|-----4-----|-----1---

----4-----|---datoD---|-----2-----|-----2---
----1-----|---datoD---|-----6-----|-----1---

...y ese es el reultado. ¿Dificil?

Espero y me hay explicado, he buscado muchas formas de hacerlo pero no encuenro la solución. Si alguien tiene alguna idea de cómo hacerlo, por favor digame.

por su atención, mil gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQ

Publicado por Alba (2 intervenciones) el 09/03/2007 11:19:26
Hola, no entiendo del todo lo que quieres hacer pero me parece que intentas agrupar por campo1 y seguidamente ordenar por campo3 de mayor a menor.....
Prueba al final d la sentencia con un group by Campo1 y tb order by Campo3

No se si respondo a tu pregunta...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQ

Publicado por DBAMASTER (3 intervenciones) el 09/03/2007 13:33:24
Efectivamente es lo que pretendo hacer, agrupar por Campo1 y luego ordenar por Campo 3, pero ya he intentado hacer eso pero no me resulta. En el SELECT hago un Sum para obtener la suma de Campo2 y por consiguiente, tengo que hacer un GROUP BY de todos los campos q hago la consulta y hago un ORDER BY Campo3 pero nada. Hago algo como sigue:

SELECT Registro,Campo1,Sum(Campo2),Campo3
FROM MiTabla
GROUP BY Registro,Campo1,Campo3
ORDER BY Campo3 desc

Trabajo con una Base de Datos Oracle

Agradezco mucho la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar