有疑问。我正在做一个我需要抓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
答案 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更改为您需要测试的任何值,或者随意对值进行硬编码