Writing a stored procedure in MS SQL Server 2008 R2, I want to avoid using DSQL...
I would like the sort method (ASC or DESC) to be conditional.
Now, with a numeric column I would simply use a case statement and negate the value to emulate ASC or DESC...
That is:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
What is an appropriate method for doing this with an alpha column?
EDIT: I thought of a clever way but it seems terribly inefficient... I could insert my ordered alpha column into a temp table with an autonumber then sort by the autonumber using the method described above.
EDIT2:
What do you guys think of this approach?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
I don't know if forcing a sort on a uniform column is more efficient than deriving numbers from sorted strings though
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…