Conditional SQL ORDER BY ASC / DESC für Alpha-Spalten

Beim Schreiben einer gespeicherten Prozedur in MS SQL Server 2008 R2 möchte ich die Verwendung von DSQL vermeiden ...

Ich möchte, dass die Sortiermethode (ASC oder DESC) bedingt ist.

Now, mit einer numerischen Spalte würde ich einfach eine case-Anweisung verwenden und den Wert negieren, um ASC oder DESC zu emulieren ... Das heißt:

... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC

Was ist eine geeignete Methode, um dies mit einer Alpha-Spalte zu tun?

EDIT: Ich dachte über eine clevere Methode nach, aber es scheint schrecklich ineffizient zu sein ... Ich könnte meine bestellte Alpha-Spalte mit einer automatischen Nummer in eine temporäre Tabelle einfügen und dann mit der oben beschriebenen Methode nach der automatischen Nummer sortieren.

EDIT2:

Was haltet ihr von diesem Ansatz?

ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC

Ich weiß nicht, ob das Erzwingen einer Sortierung für eine einheitliche Spalte effizienter ist als das Ableiten von Zahlen aus sortierten Zeichenfolgen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage