Have question. I\'m doing a select where I need to grab 2 rows. I have a value of 13000.00000. I need to grab both rows 2 and 3 since it falls between the 10000 (min range) an
Your output is correct, 13000 does not fall in the range of row 3.
The following SQL query should work for you:
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
Tested with Microsoft SQL Server. Change the 13000 to whatever value you need to test against, or feel free to hard code the value
You want to get the first row that falls below the input and the first row that falls above the input, both using MIN_RANGE
as the descriminator:
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;
This feels like a solution for a window function, which maybe someone can post.