sql - query between 2 rows

前端 未结 3 675
臣服心动
臣服心动 2021-01-24 15:38

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

相关标签:
3条回答
  • 2021-01-24 16:06

    Your output is correct, 13000 does not fall in the range of row 3.

    0 讨论(0)
  • 2021-01-24 16:10

    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

    0 讨论(0)
  • 2021-01-24 16:13

    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.

    0 讨论(0)
提交回复
热议问题