3

我希望 ROW_Number() 正常工作,除非列“框”为空。如果 'box' 为 null,则行号不会增加。

我有看起来像这样的数据......

Row Box
1   5
2   3
3   1
4   Null
5   Null
6   2
7   8
8   Null
9   Null

我希望我的查询提取看起来像这样的数据......

Row Box
1   5
2   3
3   1
3   Null
3   Null
4   2
5   8
5   Null
5   Null

我试图避免使用光标,但我不知道如何在没有光标的情况下使用它。

4

1 回答 1

3

您可以使用相关子查询来执行此操作。这是一种方法:

select (select count(box) from t t2 where t2.row <= t.row) as row,
       box
from t
order by row;

这是计算box直到给定行的有效值的数量。

在 SQL Server 2012 中,您可以使用累积来执行此操作count()

select count(box) over (order by row) as row, box
from t
order by row;

这些假设row是在问题中设置的。如果row不是从这些值开始,那么你就有问题了。SQL 表本质上是无序的,您需要一些列来指定排序。

于 2013-06-03T20:37:17.117 回答