【发布时间】:2015-12-04 21:02:40
【问题描述】:
我很难尝试进行获取大量数字、数字序列的查询,如果其中两个之间的差大于 30,则序列将从该数字重置。所以,我有下表,除了第一列之外还有另一列,应该保持原样:
+----+--------+--------+
| Id | Number | Status |
+----+--------+--------+
| 1 | 1 | OK |
| 2 | 1 | Failed |
| 3 | 2 | Failed |
| 4 | 3 | OK |
| 5 | 4 | OK |
| 6 | 36 | Failed |
| 7 | 39 | OK |
| 8 | 47 | OK |
| 9 | 80 | Failed |
| 10 | 110 | Failed |
| 11 | 111 | OK |
| 12 | 150 | Failed |
| 13 | 165 | OK |
+----+--------+--------+
它应该变成这个:
+----+--------+--------+
| Id | Number | Status |
+----+--------+--------+
| 1 | 1 | OK |
| 2 | 1 | Failed |
| 3 | 2 | Failed |
| 4 | 3 | OK |
| 5 | 4 | OK |
| 6 | 1 | Failed |
| 7 | 4 | OK |
| 8 | 12 | OK |
| 9 | 1 | Failed |
| 10 | 1 | Failed |
| 11 | 2 | OK |
| 12 | 1 | Failed |
| 13 | 16 | OK |
+----+--------+--------+
感谢您的关注,如有任何疑问,我将竭诚为您解答! :)
编辑:此表的示例:http://sqlfiddle.com/#!6/ded5af
【问题讨论】:
-
我想我理解您想要做什么,但您需要在此处再添加一列用于订购。这只是一个选择语句还是你试图更新这个表?有了您的结果,就没有什么可以维持秩序了。真正有帮助的是您可以发布 ddl 和示例数据。 sqlfiddle.com 将是一个很好的地方。
-
@SeanLange 事实上,我有一个排序列,我会在编辑时添加它。数据是机密且密集的,因此我针对我的问题对其进行了简化。
-
了解数据敏感性。没有大碍。你用的是什么版本的sql server?您能否将其转换为 sqlfiddle,以便我们可以直接解决问题,而无需将您的示例转换为工作示例?
-
SQL 服务器 2014!我会努力做到的!谢谢:)
-
在 CASE 语句中使用 LAG() 函数
标签: sql sql-server sql-server-2014