sql之识别整数范围并按它们的起点和终点对它们进行分组
tuyile006
阅读:72
2025-06-02 22:19:02
评论:0
假设我有一个包含一列 (IDNUMBER) 的数据集,如下所示:
IDNUMBER
1
2
3
1001
1002
1003
1004
1005
理想情况下,我希望将此列中存在的任何数据分成代表连续值范围的两列。
START, END
1, 3
1001, 1005
我可以使用游标或循环来执行此操作,但是否有基于集合的解决方案?
谢谢。
请您参考如下方法:
这是一个经典的峡岛
示例
Select [Start] = min(IDNUMBER)
,[End] = max(IDNUMBER)
From (
Select *
,Grp = IDNUMBER - Row_Number() over (Order by IDNUMBER)
from YourTable
) A
Group By Grp
返回
Start End
1 3
1001 1005
为了帮助您可视化这一点,子查询生成以下内容
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。