Aquí está la situación que estoy tratando de resolver:Ordenamiento personalizado en orden SQL por cláusula?
Tengo una consulta que podría devolver un conjunto de registros. El campo por el que se ordenó podría tener varios valores diferentes. En aras de esta pregunta, diremos que el valor podría ser A, B, C, D, E o Z
Ahora, dependiendo de los resultados de la consulta , la clasificación debe comportarse de la siguiente manera: Si solo se encuentran registros AE, entonces ordenarlos "naturalmente" está bien. Pero si hay un registro Z en los resultados, debe ser el primer resultado en la consulta, pero el resto de los registros debe estar en orden de clasificación "natural".
Por ejemplo, si ACD se encuentran, entonces el resultado debe ser
A
C
D
Pero si ABDEZ se encuentran a continuación, el resultado debe ser ordenados:
Z
A
B
D
E
Actualmente, la consulta se parece a:
SELECT NAME, SOME_OTHER_FIELDS FROM TABLE ORDER BY NAME
Sé que puedo codificar una función de ordenación para hacer lo que quiero, pero debido a la forma en que estoy usando los resultados, parece que no puedo usar porque los resultados están siendo manejados por una biblioteca de terceros, a la que acabo de pasar la consulta SQL. Luego está procesando los resultados, y parece que no tengo ganchos para ordenar los resultados y simplemente pasar los resultados a la biblioteca. Necesita hacer la consulta SQL en sí, y no tengo acceso al código fuente de la biblioteca.
Así que para todos ustedes gurús SQL por ahí, ¿pueden hacerme una consulta que haga lo que quiero?
cual de las bases de datos esta usando? – evilone
DB2 es el back-end. Estoy trabajando con algún código heredado. Si puedo evitar cambiar el SQL que está usando el sistema, lo hago. Pero ocasionalmente encuentro cosas que necesitan arreglo. –