在SQL中找出与给出的数值的差的绝对值最小的那一行?

来源:百度知道 编辑:UC知道 时间:2024/05/04 22:11:44
例如在表sa中

s a
---------------
12 1
15 2
19 9
23 44
34 23
假设给出一数为20,求与20的差点绝对值相差最小的那一列,如何编写?
我知道用到min(abs(s))
不是找出差值,而是找到差值最小的表中的那一行(图中即为s=19的那一行)

各位帮帮忙,很急很急!!!

select * from sa where abs(s-20)=(select min(abs(s-20)) from sa)

declare @num int
set @num=20
select min(abs(s-@num)) from sa

select * from sa where min(abs(s-20)) = ( select min(abs(s-20)) from sa)

select top 1 * from sa order by abs(s-20)

有重复么??
这样能出来你给的例子,如果有特殊情况,需要特殊处理
select s,a,min(abs(s-20)) from sa group by s,a