首页 > 解决方案 > 检查存储过程中范围内的值

问题描述

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

对于最后一个范围,它只是 count >= 50000001,它会落在 range_id 13 中。

在此处输入图像描述

我必须根据范围申请具体费用。我想不出使用 SQL Server 存储过程实现此目的的最佳方法。请帮忙,提前谢谢。

标签: sqlsql-serverstored-procedures

解决方案


您可以使用窗口函数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)

推荐阅读