我在 MS SQL SERVER 2014 中有一个这样的表:
ID|Race|Lap
1 |21 |11
2 |21 |NULL
3 |21 |NULL
4 |21 |NULL
5 |29 |65
6 |29 |NULL
7 |29 |NULL
8 |29 |NULL
我正在尝试通过根据第一个值向其添加 1 来填充 Lap 列。分区基于 Race 列。这样的结果将是最终结果:
ID|Race|Lap
1 |21 |11
2 |21 |12
3 |21 |13
4 |21 |14
5 |29 |65
6 |29 |66
7 |29 |67
8 |29 |68
可能还有其他方法可以做到这一点,但我宁愿坚持使用递归 CTE。有没有办法做到这一点?
这将产生预期的结果:
还有另一种使用窗口函数的方法:
对于这种情况,递归 CTE 可以如下使用,无需分区。