Beim Schreiben einer gespeicherten Prozedur in MS SQL Server 2008 R2 möchte ich vermeiden, DSQL zu verwenden...
Ich möchte, dass die Sortiermethode (ASC oder DESC) bedingt ist.
Jetzt würde ich bei einer numerischen Spalte einfach eine Fallanweisung 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 alphanumerischen Spalte zu tun?
EDIT: Ich habe an einen cleveren Weg gedacht, aber es scheint furchtbar ineffizient zu sein... Ich könnte meine sortierte alphanumerische Spalte in eine Temp-Tabelle mit einer automatischen Nummer einfügen und nach der automatischen Nummer unter Verwendung der oben beschriebenen Methode 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 es effizienter ist, eine Sortierung auf einer einheitlichen Spalte zu erzwingen oder Zahlen aus sortierten Zeichenfolgen abzuleiten