【发布时间】:2009-03-25 06:55:52
【问题描述】:
如何使用
ORDER BY
CASE @AccountOperator
WHEN '>' THEN AccountTrxValue
END ASC,
CASE @AccountOperator
WHEN '<' THEN AccountTrxValue
END DESC
什么时候AccountTrxValue是一个别名,并且是“select”中以下内容的结果?
CASE WHEN PAA.RedeemValue>0 THEN
PAA.RedeemValue * -1
ELSE PAA.EarnValue END
AS AccountTrxValue ,
因为大小写不接受别名
(不使用子查询)
编辑:
所以有人回答了我,我就是这样做的:
ORDER BY
CASE
WHEN @AccountOperator IS NULL OR @AccountOperator IN ('>','=') THEN
CASE WHEN PAA.RedeemValue>0 THEN
PAA.RedeemValue * -1
ELSE PAA.EarnValue END
END DESC,
CASE
WHEN @AccountOperator = '<'THEN
CASE WHEN PAA.RedeemValue>0 THEN
PAA.RedeemValue * -1
ELSE PAA.EarnValue END
END
我怎样才能写得更短? *我不能在“in”中包含 null * 我不得不做2个案例,因为似乎“desc”应该写在“end”之后
【问题讨论】:
-
请用比“orderby”更具体的东西重新标记
标签: sql sql-server sql-order-by