【发布时间】:2010-10-03 03:09:01
【问题描述】:
我有一个这样的值表
978412, 400
978813, 20
978834, 50
981001, 20
如您所见,第二个数字添加到第一个数字后,是序列中下一个数字之前的 1 个数字。最后一个数字不在范围内(不遵循直接顺序,如在下一个值中)。我需要的是一个可以输出这个的 CTE(是的,理想情况下)
978412, 472
981001, 20
第一行包含范围的起始编号,然后是其中节点的总和。下一行是下一个范围,在本例中与原始数据相同。
【问题讨论】:
-
如果您按第一列排序,那么最后一个数字 是,因为它大于任何其他数字 (981001 > 978834)。 400是怎么变成472的?
-
978412 是范围内的第一个数字,472 是该范围内的节点数(最后一个数字和第一个 - 最后一个数字之间的差为 978834+50)。
-
我相信有关于这种查询的文章,它的“称为岛屿和差距”..但我正在努力弄清楚它是如何完成的。
标签: sql-server tsql common-table-expression gaps-and-islands