3

假设我有一个表,其中可能包含各种数字,例如它可能如下所示:

示例A:MyTable -10、-3、5、10、

示例 B:MyTable -10、-5、3、10、

因此,如果我在 ExampleA 中查询表,我希望它返回“-3”(接近 0 的值)

同样,如果我查询 ExampleB 中的表,我希望它返回“3”(最接近 0 的值)

无论表中的数字如何,我总是想找到最接近零的值,我该怎么做?

另外,我如何为关系选择哪个值(例如最接近的值可能是 -3 和 3)?

4

2 回答 2

5

使用min()和的组合abs()

select num
from mytable
where abs(num) = (select min(abs(num)) from mytable)

要打破平局,请将 min() 或 max() 应用于 num 以获得负面或正面,例如

要获得平局的负数:

select min(num) num 
from mytable
where abs(num) = (select min(abs(num)) from mytable)

要获得平局的正面:

select max(num) num
from mytable
where abs(num) = (select min(abs(num)) from mytable)
于 2013-11-14T00:40:56.820 回答
3

尝试

Select top 1 with ties num
From tbl
Group by num
Order by abs(num) asc

演示

于 2013-11-14T00:31:27.423 回答