gpt4 book ai didi

Sql Order By ...使用 `Case When` 进行不同的升序、降序和自定义顺序

转载 作者:行者123 更新时间:2023-12-02 08:17:33 30 4
gpt4 key购买 nike

我想在特定条件下按折扣对产品进行排序

ORDER BY 
CASE WHEN @OrderBy = 0
THEN table.id END ASC,
CASE WHEN @Orderby = 2
THEN table.id END ASC,

我想做类似下面的事情,因为表中没有折扣列

CASE WHEN @OrderBy = 4
THEN (100-((table.price/table.oldprice)*100) as discount END ASC

但它抛出一个错误 - 我如何按折扣排序?

最佳答案

有很多问题,例如您不能在 order by 中为计算字段添加别名,并且需要转义表名、修复 cae 并计算括号的数量。

此外,由于您似乎只想对单个变量进行 CASE ,因此您可以将 @OrderBy 移至 CASE 的顶部,如下所示:

SELECT * from [table]
ORDER BY
CASE @OrderBy
WHEN 0
THEN [table].id -- ASC
WHEN 2
THEN [table].id * -1 -- DESC
---I want to do something like below as I don't have discount column in table
WHEN 4
THEN (100-([table].price/[table].oldprice)*100)
END

SqlFiddle Here

顺便说一句,如果您需要动态更改列的 ASCDESC,您可以使用类似 this 的 hack。乘以 -1。

(另请注意,ORDER BY CASE ... END ASC, CASE ... END ASC 将设置第一个和第二个排序...考虑到这似乎没有意义@OrderBy 只能有一个值)

关于Sql Order By ...使用 `Case When` 进行不同的升序、降序和自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936891/

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