【问题标题】:ORDER BY with multiple columnsORDER BY 多列
【发布时间】:2020-01-25 00:58:52
【问题描述】:

我的 sql 语句中有以下内容

ORDER BY 
    CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointName END ASC, 
    CASE WHEN @OrderColumn = 'Name' AND @Ordertype = 'ASC' THEN CD.Name END DESC,
    CASE WHEN @OrderColumn = 'ParName' AND @Ordertype = 'ASC' THEN P.ParName  END ASC,
    ...

当@OrderCoumng 是“PointName”时,我需要按 CD.PointName 和 CD.PointPerson 排序

我尝试执行以下操作,但出现错误(ASC 附近的语法不正确):

CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointName, CD.PointPerson END ASC,  

【问题讨论】:

  • 请停止喊叫。全部大写的文本更难阅读和理解,并且 SHOUTING 不会更快地为您提供帮助。谢谢。
  • CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointName END ASC, CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointPerson END ASC, ... 不工作?
  • 这能回答你的问题吗? CASE WHEN statement for ORDER BY clause

标签: sql sql-server


【解决方案1】:

你需要添加其他case表达式:

 CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointName END ASC,
 CASE WHEN @OrderColumn = 'PointName' AND @Ordertype = 'ASC' THEN CD.PointPerson END ASC

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多