检查存储过程中范围内的值

Check value within range in Stored Procedure

我有一些特定的计数值,我必须检查该计数是否在哪个范围内。范围在下面 table 中指定。例如,如果 range_start 列中的计数值 >= 1 且小于 250001,则计数位于 range_id 1,如果计数 >= 250001 且计数 < 500001,则它位于 range_id 2.

对于最后一个范围,它只是计数 >= 50000001,它会落在 range_id 13.

我要根据范围申请具体费用。我想不出使用 SQL 服务器存储过程实现此目的的最佳方法。请帮助,提前致谢。

您可以使用 window 函数 LEAD 查找下一个范围结束日期,如下所示:

select t.* from
(select t.*, lead(range_start) over (order by range_start) as range_end
  from your_table t) t
where your_count_value >= range_start 
  and (your_count_value < range_end or range_end is null)

您可以使用 order bytop:

select top (1) t.*
from t
where @value >= range_start
order by range_start desc