存在很多问题,例如,您不能按顺序对计算字段使用别名,并且您需要转义表名,修复
cae,并计算括号。
另外,由于似乎您只想
CASE使用一个变量,因此可以将其移至
@OrderByCASE的顶部,如下所示:
SELECt * from [table]ORDER BY CASE @OrderBy WHEN 0 THEN [table].id -- ASC WHEN 2 THEN [table].id * -1 -- DESC ---I want to do something like below as I don't have discount column in table WHEN 4 THEN (100-([table].price/[table].oldprice)*100) END
SqlFiddle在这里
顺便说一句,如果你需要动态改变
ASC或
DESC列,你可以使用像一个黑客这样通过乘以-1。
(还请注意,这
ORDER BY CASE ... END ASC, CASE ... ENDASC将设置第一顺序,然后设置第二顺序…鉴于
@OrderBy只能具有单个值,这似乎没有意义)



