sql - 2行之间的查询

时间:2011-06-30 18:01:15

标签: sql

有疑问。我正在做一个我需要抓2行的选择。 我的值为13000.00000。我需要抓住第2行和第3行 落在10000(最小范围)和15000(最小范围)之间

这句话只是第2行。

select *
from TABLE1
where 13000 between TABLE1.MIN_RANGE and TABLE1.MAX_RANGE;

TABLE1

Row min_range   max_range   return_value
1   0.00000      9999.99900 1.15
2   10000.00000 14999.99900 1.25
3   15000.00000 19999.99900 1.35
4   20000.00000 24999.99900 1.14

3 个答案:

答案 0 :(得分:3)

您希望第一行低于输入,第一行高于输入,两者都使用MIN_RANGE作为描述符:

select top 1 *
from TABLE1
where TABLE1.MIN_RANGE < @input
order by MIN_RANGE desc
UNION
select top 1 *
from TABLE1
where TABLE1.MIN_RANGE >= @input
order by MIN_RANGE;

这感觉就像一个窗口功能的解决方案,也许有人可以发布。

答案 1 :(得分:0)

您的输出正确,13000不在第3行的范围内。

答案 2 :(得分:0)

以下SQL查询应该适合您:

DECLARE @TestRange NUMERIC(18,0)
SET @TestRange = 13000
SELECT *, (max_range - min_range) 
    FROM TABLE1 
    WHERE ((@TestRange >= min_range AND @TestRange <= max_range) 
       OR ((@TestRange >= min_range -  (max_range - min_range) 
       AND @TestRange <= max_range))) 
    ORDER BY min_range

使用Microsoft SQL Server进行测试。将13000更改为您需要测试的任何值,或者随意对值进行硬编码