gpt4 book ai didi

sql-server - alpha 列的条件 SQL ORDER BY ASC/DESC

转载 作者:行者123 更新时间:2023-12-02 07:21:22 26 4
gpt4 key购买 nike

在 MS SQL Server 2008 R2 中编写存储过程,我想避免使用 DSQL...

我希望排序方法(ASC 或 DESC)是有条件的。

现在,对于数字列,我只需使用 case 语句并否定该值即可模拟 ASC 或 DESC...即:

... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC

使用 alpha 列执行此操作的合适方法是什么?

编辑:我想到了一个聪明的方法,但它似乎效率非常低...我可以将有序的 alpha 列插入到带有自动编号的临时表中,然后使用上述方法按自动编号进行排序。

编辑2:

你们觉得这个方法怎么样?

ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC

我不知道在统一列上强制排序是否比从排序字符串中派生数字更有效

最佳答案

一个选项

;WITH cQuery AS
(
SELECT
*,
ROW_NUMBER() OVER (ORDER BY SortColumn) AS RowNum
FROM
MyTable
)
SELECT
*
FROM
cQuery
ORDER BY
RowNum * @Direction --1 = ASC or -1 = DESC

或者恕我直言,CASE有点难看

ORDER BY
CASE WHEN 'ASC' THEN SortColumn ELSE '' END ASC,
CASE WHEN 'DESC' THEN SortColumn ELSE '' END DESC

关于sql-server - alpha 列的条件 SQL ORDER BY ASC/DESC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com