【发布时间】:2019-06-04 02:58:20
【问题描述】:
如何在case语句中编写多列的order by子句?
ORDER BY
CASE
WHEN @T='ABC' Then Val,Seq
ELSE Seq END
也试过了
ORDER BY
CASE
WHEN @T='ABC' Then Convert(int,Val)
WHEN @T='ABC' Then Convert(nvarchar,Seq)
ELSE Seq END
ORDER BY
CASE
WHEN @T='ABC' Then Val,Seq
ELSE Seq END
下面给出的代码也会抛出错误:
“执行存储过程时,此语句给出错误:“将 nvarchar 值 'EX-02-60' 转换为数据类型 int 时转换失败”。”
【问题讨论】:
-
这种尝试是倒退的。将 case expression 放在 ORDER BY 中。
-
当我建议进行此更改时,我已经在您的 other question 的评论中确切地告诉了您应该写什么。
-
OP 我更新了我的答案以明确和了解更多详细信息,并包含现场演示。
-
@Damien_The_Unbeliever 是的,你做到了。但是我遇到了语法问题,并且发生了另一个错误。因此,我将此帖子添加为单独的链。虽然这个问题仍然悬而未决,但代码已经过优化,但性能仍然保持不变,我在那个问题中也提到过。
标签: sql sql-server tsql sql-order-by case