vol*_*one 8 sql t-sql sql-server
SELECT *
FROM
TableName
WHERE
ORDER BY
CASE @OrderByColumn
WHEN 1 THEN Forename
WHEN 2 THEN Surname
END;
Run Code Online (Sandbox Code Playgroud)
我有一个上面的声明,让我动态选择如何订购查询的结果.但是,如何指定我要订购Forename DESC和Surname ASC?
das*_*ght 18
您需要分为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
Run Code Online (Sandbox Code Playgroud)
您需要在两个子句order by:
ORDER BY (CASE WHEN @OrderByColumn = 1 and @Dir = 'ASC' THEN Forename
WHEN @OrderByColumn = 2 and @Dir = 'ASC' THEN Surname
END) ASC,
(CASE WHEN @OrderByColumn = 1 and @Dir = 'DESC' THEN Forename
WHEN @OrderByColumn = 2 and @Dir = 'DESC' THEN Surname
END) DESC
Run Code Online (Sandbox Code Playgroud)