如何使用SQL Server查找最接近零的值

时间:2013-11-14 00:15:52

标签: sql sql-server numbers zero

假设我有一张可以包含各种数字的表格,例如它可能如下所示:

例A: MyTable的 -10, -3, 5, 10,

例B: MyTable的 -10, -5, 3, 10,

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

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

我总是希望找到最接近零的值而不管表中的数字,我该怎么做?

另外,我怎样才能选择哪个关系值(比如最接近的值可能是-3和3)?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

尝试

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

Demo