抱歉,我很难修改上一个问题。我想 我可能不正确地形成了我的问题......再一次是新问题。 我正在做一个我需要抓2行的选择。 我的值为13000.00000(范围)。我需要抓住第2行和第3行 落在10000(最小范围)和15000(最小范围)之间
这句话只是第2行。
select *
from TABLE1
where 13000 ?? range;
TABLE1
Row range return_value
1 0.00000 1.15
2 10000.00000 1.25
3 15000.00000 1.35
4 20000.00000 1.14
谢谢!
答案 0 :(得分:1)
您似乎需要执行以下两项操作
返回与输入范围以外的最小值范围对应的行。
SELECT *
FROM TABLE1
WHERE Range = (select MAX(range) from table1 subt1 where subt1.range < 13000)
OR Range = (select MIN(range) from table1 subt1 where subt1.range > 13000)
答案 1 :(得分:1)
这是两个问题:
SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc;
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc;
答案 2 :(得分:1)
select * from table1 where range in
(
select max(range) from (select range from table1 where range<13000)
union
select min(range) from (select range from table1 where range>13000)
)
答案 3 :(得分:0)
您是否尝试将最接近的两个值发现到另一个值(即两个接近13000的行)?或者您是否尝试在10000到15000之间找到任意两行? 15000值的标签应该是“最大范围”。如果是这样,那么我对13000的引用不清楚。
如果是后者,那么这将有效。
select top 2 * from TABLE1 where range between 10000 and 15000
这将返回两行,但不区分属于该范围的两行中的哪一行。如果你需要更具体,纳尼安的答案是一个更好的解决方案。
或者您可以使用Paul并将两个select语句合并为一个union语句:
SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc
Union
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc;