Classificação personalizada na ordem SQL por cláusula?
Aqui está a situação que estou tentando resolver:
Tenho uma consulta que pode retornar um conjunto de registros. O campo que está sendo classificado por pode ter um número de valores diferentes - para fins desta pergunta, diremos que o valor pode ser A, B, C, D, E ou Z
Agora, dependendo dos resultados da consulta, a classificação precisa se comportar da seguinte maneira: Se apenas os registros A-E forem encontrados, então a classificação "naturalmente" está correta. Mas se um registro Z estiver nos resultados, ele precisará ser o primeiro resultado na consulta, mas o restante dos registros deverá estar na ordem de classificação "natural".
Por exemplo, se A C D for encontrado, o resultado deverá ser
A
C
D
Mas se A B D E Z for encontrado, o resultado deverá ser classificado:
Z
A
B
D
E
Atualmente, a consulta se parece com:
SELECT NAME, SOME_OTHER_FIELDS FROM TABLE ORDER BY NAME
Eu sei que posso codificar uma função de classificação para fazer o que eu quero, mas por causa de como estou usando os resultados, não consigo usá-los porque os resultados estão sendo manipulados por uma biblioteca de terceiros, para a qual estou passando a consulta SQL. Ele está processando os resultados e parece que não há ganchos para eu classificar os resultados e apenas passar os resultados para a biblioteca. Ele precisa fazer a própria consulta SQL e não tenho acesso ao código fonte da biblioteca.
Então, para todos vocês, gurus do SQL, você pode fornecer uma consulta para mim que fará o que eu quer