Escribir un procedimiento almacenado en MS SQL Server 2008 R2, quiero evitar el uso de DSQL ...condicional SQL ORDER POR ASC/DESC para columnas alfa
Me gustaría que el método sort (ASC o DESC) para ser condicional.
Ahora, con una columna numérica Me basta con utilizar una declaración de caso y negar el valor de emular ASC o DESC ... Es decir:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Qué es un método apropiado para hacer esto con una Columna alfa?
EDIT: Pensé en una manera inteligente, pero parece terriblemente ineficiente ... Podría insertar mi columna alfa ordenada en una tabla temporal con un autonumber y luego ordenar por el autonumber utilizando el método descrito anteriormente.
Edit2:
¿Qué piensan ustedes de este enfoque?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
No sé si forzando una especie en una columna uniforme es más eficiente que derivar los números de cadenas ordenadas aunque
inteligente, bastante similar a mi solución que he publicado en la edición. Espero algo más eficiente que derivar otra copia ordenada de los datos solo para generar un orden de clasificación numérico ... – Matthew
@Matthew PK: debe sustituir la cadena por un número coincidente o agregar ordenaciones ficticias para no casos relevantes. Nada * realmente * inteligente Tengo miedo – gbn
¿Qué opinas sobre el enfoque de "dos cláusulas ORDER BY" en mi segunda edición? – Matthew