Orden SQL por NEWID en una declaración CASE

Estoy tratando de descubrir cómo involucrar a NEWID() (para poder devolver los resultados en un orden aleatorio) en una instrucción CASE con la cláusula ORDER BY, así:

ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE NEWID() END DESC

Obviamente, esto no funciona, ya que arroja "Choque de tipo de operando: el identificador único es incompatible con int"

¿Hay alguna manera de construir este ORDEN POR para que se ordene al azar o por una columna específica?

preguntado el 03 de mayo de 12 a las 17:05

1 Respuestas

Podrías hacerlo

ORDER BY CASE WHEN @RankingMethod = 1 THEN intFoo ELSE -1 END DESC, newid()

Si es necesario, elija otro "valor mágico" en lugar de -1

contestado el 03 de mayo de 12 a las 18:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.