【发布时间】:2013-05-04 22:44:26
【问题描述】:
我在将相同类型的记录与连续序列合并以及从合并记录中计算完整序列时遇到问题。
应根据基础 ID 进行排序,因为当序列达到 100 时,序列可能会翻转为 0。请参阅输入/输出示例中的最后一个条目。
在 SQL Server 2012 中是否可以有一个如下所列的输入并有一个产生输出的查询?
输入
Id Type Begin End
-----------------------------
1 1 10 20
2 1 21 23
3 2 24 28
4 1 29 40
5 2 41 47
6 2 48 50
7 2 75 80
8 1 81 100
9 1 0 10
10 1 11 20
11 1 21 5
12 1 5 6
输出
FromId ToId Type Begin End Length
----------------------------------------------------
1 2 1 10 23 13 (23-19)
3 3 2 24 28 4 (28-24)
4 4 1 29 40 11 (40-29)
5 6 2 41 50 9 (50-41)
7 7 2 75 80 5 (80 - 75)
8 12 1 81 20 227*
*(100-81) + 10 + (100-11 + 20) + (100-21 + 5) + 1 -> 序列的翻转
编辑
请注意,源中的第 6 行和第 7 行未合并,因为它们不连续。第 6 行以 50 结尾,第 7 行以 75 开头。只有相同类型的连续行需要合并。
【问题讨论】:
-
任务上下文中的 [Type] 真实性是什么?是 [1..2] 还是 INT?
-
它是一个 int,(现在)只能保存值 1 或 2。
标签: sql-server tsql