SQL - AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQL

 
Vista:

AYUDA CON ORDENACION DENTRO DE UNA CONSULTA SQL

Publicado por DBAMASTER (20 intervenciones) el 25/04/2007 01:06:35
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

Publicado por Leonardo (10 intervenciones) el 25/04/2007 16:24:53
Utiliza la condicion iff en el WHERE y aplicas tus reglas sobre la agrupacion

En ASPTutor.com hay un excelente manual de SQL en el que incluyen el manejo de iff

Atte
Leonardo
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