sql – 具有Desc / Asc排序的Order By子句的Case语句

SELECT *
FROM
    TableName
WHERE
ORDER BY 
    CASE @OrderByColumn
    WHEN 1 THEN Forename
    WHEN 2 THEN Surname
    END;

我有一个上面的声明,让我动态选择如何订购查询的结果.但是,如何指定我想要Forename命令DESC和Surname ASC?

解决方法

您需要将ORDER BY拆分为两部分:

SELECT *
FROM
    TableName
WHERE
ORDER BY 
    (CASE @OrderByColumn
    WHEN 1 THEN Forename
    END) DESC -- Forename --> descending,(CASE @OrderByColumn
    WHEN 2 THEN Surname
    END) ASC -- Surname --> ascending

dawei