ORDER SQL condicional por ASC / DESC para colunas alfa
Escrevendo um procedimento armazenado no MS SQL Server 2008 R2, desejo evitar o uso do DSQL ...
Eu gostaria que o método de classificação (ASC ou DESC) fosse condicional.
Agora, com uma coluna numérica, eu simplesmente usaria uma declaração de caso e negaria o valor para emular ASC ou DESC ... Ou seja:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Qual é o método apropriado para fazer isso com uma coluna alfa?
EDIT: Pensei de uma maneira inteligente, mas parece terrivelmente ineficiente ... Eu poderia inserir minha coluna alfa ordenada em uma tabela temporária com um número automático e depois classificá-lo usando o método descrito acima.
EDIT2:
O que vocês acham dessa abordagem?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
Não sei se forçar uma ordenação em uma coluna uniforme é mais eficiente do que derivar números de cadeias ordenadas