我有一个查询按降序对数字列进行排序。此列(附图中的YTD%
)是正数和负数的混合。 ORDER BY ytd DESC
首先显示具有最高正值的数据,依此类推
然而,我想按降序排列列(因此正数在负数之前),但数字从最小正数到最高值,最小负数到最高负数。所以1.50,5.10,7.10等。
答案 0 :(得分:0)
您可以在order by
:
order by (ytd > 0) desc, -- put positive numbers first
ytd asc
答案 1 :(得分:0)
根据您的具体要求,您可以
ORDER BY
SIGN(ytd) DESC,
ABS(ytd) ASC
首先得到从最低值到最高值的所有正数,然后是从最低到最负值的所有负数,其间可能为零。
换句话说,
1
3
3
5
6
0
-3
-8
-10
如果您希望在正数之前使用,则使用
ORDER BY
SIGN(SIGN(ytd) + 1) DESC,
ABS(ytd) ASC
会产生
0
1
3
3
5
6
-3
-8
-10
如果您希望混合使用负值和正值,只需按其绝对值进行排序,只需使用
即可ORDER BY
ABS(ytd) ASC,
ytd DESC
会产生
0
1
3
-3
3
5
6
-8
-10