Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/01/2013, 11:16
Wolfchamane
 
Fecha de Ingreso: junio-2008
Ubicación: Madrid
Mensajes: 73
Antigüedad: 15 años, 11 meses
Puntos: 1
Pregunta Query SELECT ORDER según casos

Buenas tardes a tod@s ...

Creo que esto se puede hacer, pero no estoy seguro.
Quiero intentar sacar los registros de una tabla ordenados por una serie de columnas según el caso.

La tabla contiene una relación de datos, entre ellas un campo texto, un booleano y un indice (no el indice del registro).
Quiero intentar ordenar los resultados de la QUERY en función del campo booleano de la siguiente forma:

- Si el booleano = TRUE -> ORDER BY indice, texto
- Si el booleano = FALSE -> ORDER BY texto

He probado con SELECT .. FROM .. ORDER BY CASE WHEN .. THEN ..;
Pero no funciona ...

¿Alguna sugerencia?
Muchas gracias.

Edit.1
He conseguido ordenar según casos con el siguiente código:
Código:
SELECT texto, orden FROM tabla ORDER BY
   CASE WHEN bool = true THEN texto
            WHEN bool = false THEN texto
            ELSE id
   END;
El problema es que no consigo enlazar, para el primer CASE WHEN, que se filtre por dos campos diferentes. Por ejemplo:
Código:
SELECT texto, orden FROM tabla ORDER BY
   CASE WHEN bool = true THEN texto, orden
            WHEN bool = false THEN texto
            ELSE id
   END;
He probado con 'AND':
Código:
SELECT texto, orden FROM tabla ORDER BY
   CASE WHEN bool = true THEN texto AND orden
            WHEN bool = false THEN texto
            ELSE id
   END;
Pero los resultados son horribles ...

Última edición por Wolfchamane; 30/01/2013 a las 11:35 Razón: anexo códigos