2013-11-14 3 views
3

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

ExampleA: MyTable -10, -3, 5 , 10,

ExampleB: MyTable -10, -5 , 3, 10,

Итак, если я запрошу таблицу в примере А, я бы хотел, чтобы она вернула «-3» (шкала значений к 0)

Аналогично, если я запросил таблицу в примере B, я бы хотел, чтобы она вернула «3» (Значение, самое близкое к 0)

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

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

ответ

5

Используйте комбинацию min() и abs():

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

Чтобы разорвать связи, применять мин() или 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) 
3

Попробуйте

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

Demo

+0

Спасибо за комментарий! Это решение работает, но не может быть легко использовано в качестве подзапроса. – user2989991

Смежные вопросы