Oracle - AYUDA CON ORDENACION DENTRO DE CONSULTA SQL

 
Vista:

AYUDA CON ORDENACION DENTRO DE CONSULTA SQL

Publicado por DBAMASTER (3 intervenciones) el 09/03/2007 06:37:13
Tengo un problema con una consulta sql en oracle 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 CONSULTA SQL

Publicado por frecobos (15 intervenciones) el 09/03/2007 21:14:45
No lei todo tu post, pero lo que pude ver rapidamente es que el resultado que buscas con las especificaciones que comentas no siempre te saldra dato C al principio.

No lo he probado, pero intenta:
select *
from tabla
order by Campo1, Campo3 Desc;
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 CONSULTA SQL

Publicado por DBSMASTER (1 intervención) el 12/03/2007 15:47:27
Agradezco la ayuda, pero con eso no consigo lo que busco. Si tienes alguna otra idea, te la voy a agradecer muchísimo.
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