Как найти значение, ближайшее к нулю, с помощью SQL Server

Допустим, у меня есть таблица, в которой могут быть разные числа, например, она может выглядеть следующим образом:

Пример A: MyTable -10, -3, 5, 10,

Пример Б: MyTable -10, -5, 3, 10,

Поэтому, если бы я запросил таблицу в ExampleA, я бы хотел, чтобы она возвращала «-3» (значение близко к 0)

Точно так же, если бы я запросил таблицу в примере B, я бы хотел, чтобы она возвращала «3» (значение, ближайшее к 0).

Я всегда хочу найти значение, ближайшее к нулю, независимо от чисел в таблице, как мне это сделать?

Кроме того, как я могу выбрать, какое значение для связей (например, в случае, когда ближайшим значением может быть -3 и 3)?


person user2989991    schedule 14.11.2013    source источник


Ответы (2)


Используйте комбинацию 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)
person Bohemian♦    schedule 14.11.2013

Пытаться

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

Демо

person T I    schedule 14.11.2013
comment
Спасибо за комментарий! Это решение сработало, но его нельзя легко использовать в качестве подзапроса. - person user2989991; 14.11.2013